diff --git a/ChangeLog b/ChangeLog index 7f210c6fab1afaffb967ce7054ff8b2ce8275f75..0f2ed877a1360fb2df84a3214feec45c2a293433 100644 --- a/ChangeLog +++ b/ChangeLog @@ -26,19 +26,19 @@ Dolibarr better: - The old driver of "mysql" has been removed. Dolibarr use the new one (mysqli) by default. - Remove not used function calculate_byte(). Use dol_print_size() instead. - Function pdf_getTotalQty is now deprecated. Not used by Dolibarr core. +- Method commande->deleteline($lineid) has been replaced with commande->deleteline($user, $lineid). - Method expensereport->delete(id, user) has been replaced with ->delete(user) Method warehouse->delete(id) has been replace with ->delete(user) This is to follow good practice to make a fetch on object before deleting it. -- The form to add a product to a draft proposal/order/invoice from the product card is hidden by default. +- The form to add a product to a draft proposal/order/invoice, from the product card, is hidden by default. It was not commonly used and usage generates some problems (cost price for margin calculation not entered, vat setting). Set constant PRODUCT_ADD_FORM_ADD_TO to retrieve it. -- The javascript "datatables" library was used to be provided into Dolibarr sources, but it was not used by application. +- The javascript "datatables" library was previously provided into Dolibarr sources, but it was not used by application. So there is no reason to maintain its compatibility with other dolibarr components. If an external module need this - library, this external module must embed hte library in his own sources/packages. -- Trigger name SUPPLIER_PROPOSAL_CREATE has been renamed into PROPOSAL_SUPPLIER_CREATE -- A new paramater sqlfilters was introduced to allow filter on any fields int the REST API. Few old parameters - no more required were also removed. Use this new one if you ware using one of them. -- Method commande->deleteline($lindeid) has been replaced with commande->deleteline($user, $lineid). + library, this external module must embed the library in his own sources/packages. +- Trigger name SUPPLIER_PROPOSAL_CREATE has been renamed into PROPOSAL_SUPPLIER_CREATE. +- A new paramater sqlfilters was introduced to allow filter on any fields int the REST API. Few old parameters, + no more required, were also removed. Use this new one if you were using one of them. diff --git a/build/debian/README.howto b/build/debian/README.howto index cd7cd93c24e44580faabe638bffb3c4c89f1ebe5..696ea9a2bef1df9c0b471aab3ef2bd7ccc17be19 100644 --- a/build/debian/README.howto +++ b/build/debian/README.howto @@ -295,12 +295,16 @@ If script fails with error Bad certificate, you can set "export PERL_LWP_SSL_VER * Edit orig.tar.gz file to remove - debian - htdocs/includes/ckeditor -- htdocs/includes/jszip +- htdocs/includes/jquery/css +- htdocs/includes/jquery/js +- htdocs/includes/jquery/plugins/flot +- htdocs/includes/jquery/plugins/multiselect - htdocs/includes/jquery/plugins/datatables +- htdocs/includes/jszip - htdocs/includes/mike42 - htdocs/includes/phpexcel or htdocs/includes/phpoffice -- htdocs/includes/swiftmailer - htdocs/includes/restler/framework/Luracast/Restler/explorer +- htdocs/includes/swiftmailer - htdocs/includes/tcpdf or htdocs/includes/tecnickcom And rename file into dolibarr-x.y.z+dfsgw.tgz diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php index c47a87a803375700b5811c5c5ed60d51febef457..0eac0c761c7bab96ef3fd59311f40045d877d1eb 100644 --- a/dev/skeletons/skeleton_list.php +++ b/dev/skeletons/skeleton_list.php @@ -1,5 +1,5 @@ <?php -/* Copyright (C) 2007-2015 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2007-2016 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2014-2016 Juanjo Menent <jmenent@2byte.es> * * This program is free software; you can redistribute it and/or modify diff --git a/htdocs/.gitignore b/htdocs/.gitignore index 608ef55d1066e0d29e68a187cc420eee1d539f59..1650ea7e5ae8246f02ae4c17377a7f7ff9991b9d 100644 --- a/htdocs/.gitignore +++ b/htdocs/.gitignore @@ -22,3 +22,4 @@ /cabinetmed* /webmail* /conf/conf.php +/subtotal/ diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 95ba62de0c576f4d1fbdf63b26658396a5b5632e..cb3255f981d603045261e6e6e882d69a05509226 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -256,10 +256,8 @@ if ($resql) { print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_pcgsubtype" value="' . $search_pcgsubtype . '"></td>'; print '<td class="liste_titre"> </td>'; print '<td align="right" colspan="2" class="liste_titre">'; - - print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'search.png', '', '', 1) . '" name="button_search" value="' . dol_escape_htmltag($langs->trans("Search")) . '" title="' . dol_escape_htmltag($langs->trans("Search")) . '">'; - print ' '; - print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" name="button_removefilter" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">'; + $searchpitco=$form->showFilterAndCheckAddButtons($massactionbutton?1:0, 'checkforselect', 1); + print $searchpitco; print '</td>'; print '</tr>'; diff --git a/htdocs/accountancy/admin/defaultaccounts.php b/htdocs/accountancy/admin/defaultaccounts.php index a66217ebbee11183801e88f394f6628634cd5a34..6854c8a45ffe7bb15b6e3ec3a6726061bb0c6032 100644 --- a/htdocs/accountancy/admin/defaultaccounts.php +++ b/htdocs/accountancy/admin/defaultaccounts.php @@ -138,7 +138,7 @@ foreach ( $list_account as $key ) { $label = $langs->trans($key); print '<td>' . $label . '</td>'; // Value - print '<td align="right">'; + print '<td>'; // Do not force align=right, or it align also the content of the select box print $formaccountancy->select_account($conf->global->$key, $key, 1, '', 1, 1); print '</td>'; print '</tr>'; diff --git a/htdocs/accountancy/admin/importaccounts.php b/htdocs/accountancy/admin/importaccounts.php index 720f3a4f0124c3dc61e2d03713ae1ace230769f9..99b491688cbc2d74f96025cda6752e39c8967e67 100644 --- a/htdocs/accountancy/admin/importaccounts.php +++ b/htdocs/accountancy/admin/importaccounts.php @@ -40,6 +40,22 @@ $langs->load("accountancy"); if (! $user->admin) accessforbidden(); +$limit = GETPOST("limit")?GETPOST("limit","int"):(empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)?$conf->liste_limit:$conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION); +$sortfield = GETPOST("sortfield",'alpha'); +$sortorder = GETPOST("sortorder",'alpha'); +$page = GETPOST("page",'int'); +if ($page == -1) { $page = 0; } +$offset = $limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; + + + + +/* + * View + */ + llxHeader('', $langs->trans("ImportAccount")); $to_import = GETPOST("mesCasesCochees"); @@ -90,15 +106,7 @@ if ($_POST["action"] == 'import') { print '<div><font color="red">' . $langs->trans("EndProcessing") . '</font></div>'; } -/* - * list accounting account from product - * - */ -$page = GETPOST("page"); -if ($page < 0) - $page = 0; -$limit = $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION; -$offset = $limit * $page; +// list accounting account from product $sql = "(SELECT p.rowid as product_id, p.accountancy_code_sell as accounting "; $sql .= " FROM " . MAIN_DB_PREFIX . "product as p "; diff --git a/htdocs/accountancy/admin/index.php b/htdocs/accountancy/admin/index.php index 4eb95d298c55c9e26f48c633eac088fb342a8ccc..8f023432727d97b15af59169bc9a1bd19438ab0d 100644 --- a/htdocs/accountancy/admin/index.php +++ b/htdocs/accountancy/admin/index.php @@ -50,8 +50,6 @@ $action = GETPOST('action', 'alpha'); // Parameters ACCOUNTING_* and others $list = array ( - //'ACCOUNTING_LIMIT_LIST_VENTILATION', Useless, we can change value dynamically, so we use default global setup - 'ACCOUNTING_MANAGE_ZERO', 'ACCOUNTING_LENGTH_GACCOUNT', 'ACCOUNTING_LENGTH_AACCOUNT' , 'ACCOUNTING_LENGTH_DESCRIPTION', // adjust size displayed for lines description for dol_trunc @@ -85,13 +83,11 @@ if ($action == 'update') { $error ++; } - if (! $error) { - setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } else { + if ($error) { setEventMessages($langs->trans("Error"), null, 'errors'); } - foreach ( $list as $constname ) { + foreach ($list as $constname) { $constvalue = GETPOST($constname, 'alpha'); if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) { @@ -259,41 +255,37 @@ if (! empty($user->admin)) print '</a></td>'; } print '</tr>'; + + $var = ! $var; + print "<tr " . $bc[$var] . ">"; + print '<td>' . $langs->trans("ACCOUNTING_MANAGE_ZERO") . '</td>'; + if (! empty($conf->global->ACCOUNTING_MANAGE_ZERO)) { + print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=0">'; + print img_picto($langs->trans("Activated"), 'switch_on'); + print '</a></td>'; + } else { + print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=1">'; + print img_picto($langs->trans("Disabled"), 'switch_off'); + print '</a></td>'; + } + print '</tr>'; } // Param a user $user->rights->accountancy->chartofaccount can access -foreach ( $list as $key ) { +foreach ($list as $key) +{ $var = ! $var; - if ($key != 'ACCOUNTING_MANAGE_ZERO') - { - print '<tr ' . $bc[$var] . ' class="value">'; - // Param - $label = $langs->trans($key); - print '<td>'.$label.'</td>'; - // Value - print '<td align="right">'; - print '<input type="text" size="20" id="' . $key . '" name="' . $key . '" value="' . $conf->global->$key . '">'; - print '</td>'; - print '</tr>'; - } - if ($key == 'ACCOUNTING_MANAGE_ZERO') - { - $var = ! $var; - print "<tr " . $bc[$var] . ">"; - print '<td>' . $langs->trans("ACCOUNTING_MANAGE_ZERO") . '</td>'; - if (! empty($conf->global->ACCOUNTING_MANAGE_ZERO)) { - print '<td align="right""><a href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=0">'; - print img_picto($langs->trans("Activated"), 'switch_on'); - print '</a></td>'; - } else { - print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=1">'; - print img_picto($langs->trans("Disabled"), 'switch_off'); - print '</a></td>'; - } - print '</tr>'; - } + print '<tr ' . $bc[$var] . ' class="value">'; + // Param + $label = $langs->trans($key); + print '<td>'.$label.'</td>'; + // Value + print '<td align="right">'; + print '<input type="text" size="20" id="' . $key . '" name="' . $key . '" value="' . $conf->global->$key . '">'; + print '</td>'; + print '</tr>'; } @@ -302,10 +294,6 @@ print '</table>'; - - - - dol_fiche_end(); print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('Modify') . '" name="button"></div>'; diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index 495fb2a1304c4ac743b22ff537821b4e769ca949..1cb37e92baa29c5dca25e08f5310634078ce6e40 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -40,6 +40,7 @@ $langs->load("companies"); $langs->load("compta"); $langs->load("main"); $langs->load("accountancy"); +$langs->load("products"); // Security check if (empty($conf->accounting->enabled)) { @@ -61,6 +62,10 @@ $changeaccount_sell = GETPOST('changeaccount_sell', 'array'); $search_ref = GETPOST('search_ref', 'alpha'); $search_label = GETPOST('search_label', 'alpha'); $search_desc = GETPOST('search_desc', 'alpha'); +$search_current_account = GETPOST('search_current_account', 'alpha'); +$search_current_account_valid = GETPOST('search_current_account_valid', 'alpha'); +if ($search_current_account_valid == '') $search_current_account_valid='withoutvalidaccount'; + $accounting_product_mode = GETPOST('accounting_product_mode', 'alpha'); $btn_changeaccount = GETPOST('changeaccount'); $btn_changetype = GETPOST('changetype'); @@ -85,12 +90,21 @@ $arrayfields=array(); * Actions */ +if (GETPOST('cancel')) { $action='list'; $massaction=''; } +if (! GETPOST('confirmmassaction') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; } + +$parameters=array(); +$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + // Purge search criteria if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // All test are required to be compatible with all browsers { $search_ref = ''; $search_label = ''; $search_desc = ''; + $search_current_account = ''; + $search_current_account_valid = '-1'; } // Sales or Purchase mode ? @@ -189,23 +203,38 @@ $aacompta_prodsell = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? llxHeader('', $langs->trans("ProductsBinding")); -$pcgver = $conf->global->CHARTOFACCOUNTS; +$pcgverid = $conf->global->CHARTOFACCOUNTS; +$pcgvercode = dol_getIdFromCode($db, $pcgverid, 'accounting_system', 'rowid', 'pcg_version'); +if (empty($pcgvercode)) $pcgvercode=$pcgverid; -$sql = "SELECT p.rowid, p.ref, p.label, p.description , p.accountancy_code_sell, p.accountancy_code_buy, p.tms, p.fk_product_type as product_type"; -$sql .= " FROM " . MAIN_DB_PREFIX . "product as p"; -$sql .= " WHERE ("; -if ($accounting_product_mode == 'ACCOUNTANCY_BUY' ? ' checked' : '') { - $sql .= " p.accountancy_code_buy ='' OR p.accountancy_code_buy IS NULL"; - $sql .= " OR (p.accountancy_code_buy IS NOT NULL AND p.accountancy_code_buy != '' AND p.accountancy_code_buy NOT IN - (SELECT aa.account_number FROM " . MAIN_DB_PREFIX . "accounting_account as aa , " . MAIN_DB_PREFIX . "accounting_system as asy WHERE fk_pcg_version = asy.pcg_version AND asy.rowid = " . $pcgver . "))"; +$sql = "SELECT p.rowid, p.ref, p.label, p.description, p.tosell, p.tobuy, p.accountancy_code_sell, p.accountancy_code_buy, p.tms, p.fk_product_type as product_type,"; +$sql.= " aa.rowid as aaid"; +$sql.= " FROM " . MAIN_DB_PREFIX . "product as p"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON"; +if ($accounting_product_mode == 'ACCOUNTANCY_BUY') { + $sql.=" p.accountancy_code_buy = aa.account_number AND aa.fk_pcg_version = '" . $pcgvercode . "'"; +} +else +{ + $sql.=" p.accountancy_code_sell = aa.account_number AND aa.fk_pcg_version = '" . $pcgvercode . "'"; +} +$sql.= ' WHERE p.entity IN ('.getEntity('product', 1).')'; +if ($accounting_product_mode == 'ACCOUNTANCY_BUY') { + if (strlen(trim($search_current_account))) { + $sql .= natural_search("p.accountancy_code_buy",$search_current_account); + } } else { - $sql .= " p.accountancy_code_sell ='' OR p.accountancy_code_sell IS NULL "; - $sql .= " OR (p.accountancy_code_sell IS NOT NULL AND p.accountancy_code_sell != '' AND p.accountancy_code_sell NOT IN - (SELECT aa.account_number FROM " . MAIN_DB_PREFIX . "accounting_account as aa , " . MAIN_DB_PREFIX . "accounting_system as asy WHERE fk_pcg_version = asy.pcg_version AND asy.rowid = " . $pcgver . "))"; + if (strlen(trim($search_current_account))) { + $sql .= natural_search("p.accountancy_code_sell",$search_current_account); + } } -$sql .= ")"; -if (! empty($conf->multicompany->enabled)) { - $sql.= ' AND p.entity IN ('.getEntity('product', 1).')'; +if ($search_current_account_valid == 'withoutvalidaccount') +{ + $sql .= " AND aa.account_number IS NULL"; +} +if ($search_current_account_valid == 'withvalidaccount') +{ + $sql .= " AND aa.account_number IS NOT NULL"; } // Add search filter like if (strlen(trim($search_ref))) { @@ -218,6 +247,7 @@ if (strlen(trim($search_desc))) { $sql .= natural_search("p.description",$search_desc); } $sql .= $db->order($sortfield, $sortorder); + $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { @@ -236,9 +266,11 @@ if ($result) $param=''; if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; - if ($search_ref > 0) $param.="&search_desc=".urlencode($search_ref); - if ($search_label > 0) $param.="&search_desc=".urlencode($search_label); - if ($search_desc > 0) $param.="&search_desc=".urlencode($search_desc); + if ($search_ref > 0) $param.="&search_desc=".urlencode($search_ref); + if ($search_label > 0) $param.="&search_desc=".urlencode($search_label); + if ($search_desc > 0) $param.="&search_desc=".urlencode($search_desc); + if ($search_current_account > 0) $param.="&search_current_account=".urlencode($search_current_account); + if ($search_current_account_valid && $search_current_account_valid != '-1') $param.="&search_current_account_valid=".urlencode($search_current_account_valid); print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">'; if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; @@ -260,11 +292,10 @@ if ($result) print '<td>' . $langs->trans('Options') . '</td><td>' . $langs->trans('Description') . '</td>'; print "</tr>\n"; print '<tr ' . $bc[false] . '><td class="titlefield"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_SELL"' . ($accounting_product_mode != 'ACCOUNTANCY_BUY' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductSell') . '</td>'; - print '<td colspan="2">' . nl2br($langs->trans('OptionModeProductSellDesc')); + print '<td>'.$langs->trans('OptionModeProductSellDesc'); print "</td></tr>\n"; print '<tr ' . $bc[true] . '><td class="titlefield"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_BUY"' . ($accounting_product_mode == 'ACCOUNTANCY_BUY' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductBuy') . '</td>'; - print '<td colspan="2">' . nl2br($langs->trans('OptionModeProductBuyDesc')) . "</td></tr>\n"; - + print '<td>'.$langs->trans('OptionModeProductBuyDesc')."</td></tr>\n"; print "</table>\n"; print '<div align="center"><input type="submit" class="button" value="' . $langs->trans('Refresh') . '" name="changetype"></div>'; @@ -277,7 +308,7 @@ if ($result) $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields - $texte=$langs->trans("ListOfProductsWithoutAccountingAccount"); + $texte=$langs->trans("ListOfProductsServices"); print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, '', 0, '', '', $limit); print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">'; @@ -285,37 +316,54 @@ if ($result) print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder); if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) print_liste_field_titre($langs->trans("Description"), $_SERVER["PHP_SELF"], "p.description", "", $param, '', $sortfield, $sortorder); - /* - if ($accounting_product_mode == 'ACCOUNTANCY_BUY') { - print_liste_field_titre($langs->trans("Accountancy_code_buy")); - } else { - print_liste_field_titre($langs->trans("Accountancy_code_sell")); - } - */ - print_liste_field_titre($langs->trans("AccountAccounting")); - //print_liste_field_titre($langs->trans("Modify") . '<br><label id="select-all">' . $langs->trans('All') . '</label> / <label id="unselect-all">' . $langs->trans('None') . '</label>', '', '', '', '', 'align="center"'); + print_liste_field_titre($langs->trans("OnSell"), $_SERVER["PHP_SELF"], "p.tosell", "", $param, 'align="center"', $sortfield, $sortorder); + print_liste_field_titre($langs->trans("OnBuy"), $_SERVER["PHP_SELF"], "p.tobuy", "", $param, 'align="center"', $sortfield, $sortorder); + if ($accounting_product_mode == 'ACCOUNTANCY_BUY') { + $fieldtosortaccount="p.accountancy_code_buy"; + } + else $fieldtosortaccount="p.accountancy_code_sell"; + print_liste_field_titre($langs->trans("CurrentDedicatedAccountingAccount"), $_SERVER["PHP_SELF"], $fieldtosortaccount, "", $param, '', $sortfield, $sortorder); + print_liste_field_titre($langs->trans("AssignDedicatedAccountingAccount")); print_liste_field_titre('', '', '', '', '', 'align="center"'); print '</tr>'; print '<tr class="liste_titre">'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_ref" value="' . dol_escape_htmltag($search_ref) . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>'; - if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) print '<td class="liste_titre"> </td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="8" name="search_ref" value="' . dol_escape_htmltag($search_ref) . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>'; + if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>'; + // On sell + print '<td class="liste_titre"></td>'; + // On buy + print '<td class="liste_titre"></td>'; + // Current account + print '<td class="liste_titre">'; + print '<input type="text" class="flat" size="6" name="search_current_account" value="' . dol_escape_htmltag($search_current_account) . '">'; + $listofvals=array('withoutvalidaccount'=>$langs->trans("WithoutValidAccount"), 'withvalidaccount'=>$langs->trans("WithValidAccount")); + print ' '.$langs->trans("or").' '.$form->selectarray('search_current_account_valid', $listofvals, $search_current_account_valid, 1); + print '</td>'; + print '<td class="liste_titre"> </td>'; print '<td align="right" class="liste_titre">'; $searchpitco=$form->showFilterAndCheckAddButtons(1, 'checkforselect', 1); print $searchpitco; print '</td>'; print '</tr>'; - $var = true; + $product_static = new Product($db); + $var = true; + $i=0; while ($i < min($num,$limit)) { $obj = $db->fetch_object($result); - $var = ! $var; - - $compta_prodsell = $obj->accountancy_code_sell; + + // Ref produit as link + $product_static->ref = $obj->ref; + $product_static->id = $obj->rowid; + $product_static->type = $obj->product_type; + $product_static->label = $obj->label; + $product_static->description = $obj->description; + $product_static->status = $obj->tosell; + $product_static->status_buy = $obj->tobuy; if ($obj->product_type == 0) { $compta_prodsell = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef")); @@ -325,8 +373,6 @@ if ($result) $compta_prodsell_id = $aarowid_servsell; } - $compta_prodbuy = $obj->accountancy_code_buy; - if ($obj->product_type == 0) { $compta_prodbuy = (! empty($conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT : $langs->trans("CodeNotDef")); $compta_prodbuy_id = $aarowid_prodbuy; @@ -335,30 +381,15 @@ if ($result) $compta_prodbuy_id = $aarowid_servbuy; } - $product_static = new Product($db); - - print '<tr'. $bc[$var].'>'; - - print "</tr>"; - + $var = ! $var; print '<tr '. $bc[$var].'>'; - // Ref produit as link - $product_static->ref = $obj->ref; - $product_static->id = $obj->rowid; - $product_static->type = $obj->type; - $product_static->label = $obj->label; - $product_static->description = $obj->description; - print '<td>'; - if ($product_static->id) - print $product_static->getNomUrl(1); - else - print '- '; + print $product_static->getNomUrl(1); print '</td>'; print '<td align="left">'.$obj->label.'</td>'; - + if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) { // TODO ADJUST DESCRIPTION SIZE @@ -368,24 +399,43 @@ if ($result) print '<td style="' . $code_sell_p_l_differ . '">' . nl2br(dol_trunc($obj->description, $trunclengh)) . '</td>'; } - // Accounting account buy + print '<td align="center">'.$product_static->getLibStatut(3, 0).'</td>'; + + print '<td align="center">'.$product_static->getLibStatut(3, 1).'</td>'; + + // Current accounting account + print '<td align="left">'; + if ($accounting_product_mode == 'ACCOUNTANCY_BUY') { + print length_accountg($obj->accountancy_code_buy); + if ($obj->accountancy_code_buy && empty($obj->aaid)) print ' '.img_warning($langs->trans("ValueNotIntoChartOfAccount")); + } + else + { + print length_accountg($obj->accountancy_code_sell); + if ($obj->accountancy_code_sell && empty($obj->aaid)) print ' '.img_warning($langs->trans("ValueNotIntoChartOfAccount")); + } + print '</td>'; + + // Dedicated account + $defaultvalue=''; if ($accounting_product_mode == 'ACCOUNTANCY_BUY') { - // print '<td align="left">' . $obj->accountancy_code_buy . '</td>'; - // TODO: replace by select - // print '<td align="left">' . $compta_prodbuy . '</td>'; - // TODO: we shoul set a user defined value to adjust user square / wide screen size - // $trunclenghform = defined('ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT') ? ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT : 50; + // Accounting account buy print '<td align="left">'; - print $form->select_account($compta_prodbuy_id, 'codeventil_' . $product_static->id, 1); + //$defaultvalue=GETPOST('codeventil_' . $product_static->id,'alpha'); This is id and we need a code + if (empty($defaultvalue)) $defaultvalue=$compta_prodbuy; + $codesell=length_accountg($obj->accountancy_code_buy); + if (! empty($obj->aaid)) $defaultvalue = ''; // Do not suggest default new value is code is already valid + print $form->select_account($defaultvalue, 'codeventil_' . $product_static->id, 1, array(), 1); print '</td>'; } else { // Accounting account sell - // print '<td align="left">' . $obj->accountancy_code_sell . '</td>'; - // TODO: replace by select - // TODO: we shoul set a user defined value to adjust user square / wide screen size - // $trunclenghform = defined('ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT') ? ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT : 50; print '<td align="left">'; - print $form->select_account($compta_prodsell_id, 'codeventil_' . $product_static->id, 1); + //$defaultvalue=GETPOST('codeventil_' . $product_static->id,'alpha'); This is id and we need a code + if (empty($defaultvalue)) $defaultvalue=$compta_prodsell; + $codesell=length_accountg($obj->accountancy_code_sell); + //var_dump($defaultvalue.' - '.$codesell.' - '.$compta_prodsell); + if (! empty($obj->aaid)) $defaultvalue = ''; // Do not suggest default new value is code is already valid + print $form->select_account($defaultvalue, 'codeventil_' . $product_static->id, 1, array(), 1); print '</td>'; } @@ -397,7 +447,34 @@ if ($result) } print '</table>'; - print '<br><div align="center"><input type="submit" class="butAction" name="changeaccount" value="' . $langs->trans("Save") . '"></div>'; + // Example : Adding jquery code + print '<script type="text/javascript" language="javascript"> + jQuery(document).ready(function() { + function init_savebutton() + { + console.log("We check if at least one line is checked") + + atleastoneselected=0; + jQuery(".checkforselect").each(function( index ) { + /* console.log( index + ": " + $( this ).text() ); */ + if ($(this).is(\':checked\')) atleastoneselected++; + }); + + if (atleastoneselected) jQuery("#changeaccount").removeAttr(\'disabled\'); + else jQuery("#changeaccount").attr(\'disabled\',\'disabled\'); + if (atleastoneselected) jQuery("#changeaccount").attr(\'class\',\'butAction\'); + else jQuery("#changeaccount").attr(\'class\',\'butActionRefused\'); + } + jQuery(".checkforselect, #checkallactions").click(function() { + init_savebutton(); + }); + + init_savebutton(); + }); + </script>'; + + + print '<br><div align="center"><input type="submit" class="butAction" id="changeaccount" name="changeaccount" value="' . $langs->trans("Save") . '"></div>'; print '</form>'; diff --git a/htdocs/accountancy/class/html.formventilation.class.php b/htdocs/accountancy/class/html.formventilation.class.php index ac72df44e21e016851ff01f75db3dfd396a2e264..fab9e81031dfab3398b17b02445aabcb7efb17be 100644 --- a/htdocs/accountancy/class/html.formventilation.class.php +++ b/htdocs/accountancy/class/html.formventilation.class.php @@ -65,7 +65,7 @@ class FormVentilation extends Form /** * Return list of accounts with label by chart of accounts * - * @param string $selectid Preselected chart of accounts + * @param string $selectid Preselected id or code of accounting accounts (depends on $select_in) * @param string $htmlname Name of field in html form * @param int $showempty Add an empty field * @param array $event Event options @@ -99,26 +99,28 @@ class FormVentilation extends Form $out = ajax_combobox($htmlname, $event); + // TODO Add $options in cache so next call will not execute the request + $selected = 0; $options = array(); - $selected = null; - - while ($obj = $this->db->fetch_object($resql)) { + while ($obj = $this->db->fetch_object($resql)) + { $label = length_accountg($obj->account_number) . ' - ' . $obj->label; $label = dol_trunc($label, $trunclength); $select_value_in = $obj->rowid; $select_value_out = $obj->rowid; + // Try to guess if we have found default value if ($select_in == 1) { $select_value_in = $obj->account_number; } if ($select_out == 1) { $select_value_out = $obj->account_number; } - // Remember guy's we store in database llx_facturedet the rowid of accounting_account and not the account_number // Because same account_number can be share between different accounting_system and do have the same meaning - if (($selectid != '') && $selectid == $select_value_in) { + if ($selectid != '' && $selectid == $select_value_in) { + //var_dump("Found ".$selectid." ".$select_value_in); $selected = $select_value_out; } @@ -127,6 +129,7 @@ class FormVentilation extends Form $out .= Form::selectarray($htmlname, $options, $selected, $showempty, 0, 0, '', 0, 0, 0, '', $morecss, 1); $this->db->free($resql); + return $out; } diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index d33fc82f3bc9ca663a4915891937e08267c40fad..b18923a1e1d57be91d27d0170b1936d8061cbe94 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -83,7 +83,7 @@ $formventilation = new FormVentilation($db); */ // Purge search criteria -if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers +if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // All tests are required to be compatible with all browsers { $search_ref = ''; $search_invoice = ''; @@ -254,6 +254,7 @@ if ($result) { print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n"; print '<tr class="liste_titre">'; + print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "fd.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Invoice"), $_SERVER["PHP_SELF"], "f.facnumber", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder); @@ -263,21 +264,20 @@ if ($result) { print_liste_field_titre($langs->trans("Account"), $_SERVER["PHP_SELF"], "aa.account_number", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Country"), $_SERVER["PHP_SELF"], "co.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("VATIntra"), $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder); - print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "fd.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre('', '', '', '', '', 'align="center"'); print "</tr>\n"; print '<tr class="liste_titre">'; - print '<td class="liste_titre"><input type="text" class="flat" name="search_invoice" size="10" value="' . $search_invoice . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_ref" value="' . $search_ref . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_desc" value="' . $search_desc . '"></td>'; + print '<td class="liste_titre"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" name="search_invoice" size="6" value="' . $search_invoice . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_ref" value="' . $search_ref . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>'; print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>'; print '<td class="liste_titre" align="center"><input type="text" class="flat" size="3" name="search_vat" value="' . $search_vat . '"></td>'; - print '<td class="liste_titre" align="center"><input type="text" class="flat" size="10" name="search_account" value="' . $search_account . '"></td>'; + print '<td class="liste_titre" align="center"><input type="text" class="flat" size="6" name="search_account" value="' . $search_account . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat" name="search_country" size="5" value="' . $search_country . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat" name="search_tavintra" size="5" value="' . $search_tavintra . '"></td>'; - print '<td class="liste_titre" align="right"></td>'; print '<td class="liste_titre" align="right">'; $searchpitco=$form->showFilterAndCheckAddButtons(1); print $searchpitco; @@ -293,6 +293,8 @@ if ($result) { print '<tr '. $bc[$var].'>'; + print '<td align="right">' . $objp->rowid . '</td>'; + // Ref Invoice $facture_static->ref = $objp->facnumber; $facture_static->id = $objp->rowid; @@ -319,7 +321,6 @@ if ($result) { print '</a></td>'; print '<td>' . $objp->country .'</td>'; print '<td>' . $objp->tva_intra . '</td>'; - print '<td align="right">' . $objp->rowid . '</td>'; print '<td align="right"><input type="checkbox" class="checkforaction" name="changeaccount[]" value="' . $objp->fdid . '"/></td>'; print "</tr>"; diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 7c718c54bfb4913af3b313c70b60dcbf31381eef..84d5e3ffdeee67c482502c2053419ac1adac0ec9 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -158,9 +158,10 @@ if ($action == 'ventil' && ! empty($btn_ventil)) { llxHeader('', $langs->trans("Ventilation")); // Customer Invoice lines -$sql = "SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype, l.fk_product, l.description, l.total_ht, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line,"; +$sql = "SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype,"; +$sql .= " l.fk_product, l.description, l.total_ht, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line,"; $sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_sell as code_sell, p.tva_tx as tva_tx_prod,"; -$sql .= " aa.rowid as aarowid"; +$sql .= " aa.rowid as aarowid"; $sql .= " FROM " . MAIN_DB_PREFIX . "facture as f"; $sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facturedet as l ON f.rowid = l.fk_facture"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product"; @@ -237,6 +238,7 @@ if ($result) { print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n"; print '<tr class="liste_titre">'; + print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Invoice"), $_SERVER["PHP_SELF"], "f.facnumber", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder); @@ -245,19 +247,18 @@ if ($result) { print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("AccountAccountingSuggest"), '', '', '', '', 'align="center"'); print_liste_field_titre($langs->trans("IntoAccount"), '', '', '', '', 'align="center"'); - print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre('', '', '', '', '', 'align="center"'); print '</tr>'; // We add search filter print '<tr class="liste_titre">'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_invoice" value="' . $search_invoice . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_ref" value="' . $search_ref . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_desc" value="' . $search_desc . '"></td>'; - print '<td class="liste_titre" align="right"><input type="text" class="flat" size="10" name="search_amount" value="' . $search_amount . '"></td>'; - print '<td class="liste_titre" align="right"><input type="text" class="flat" size="3" name="search_vat" value="' . $search_vat . '">%</td>'; print '<td class="liste_titre"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_invoice" value="' . $search_invoice . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_ref" value="' . $search_ref . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>'; + print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>'; + print '<td class="liste_titre" align="right"><input type="text" class="flat" size="3" name="search_vat" value="' . $search_vat . '">%</td>'; print '<td class="liste_titre"></td>'; print '<td class="liste_titre"></td>'; print '<td align="right" class="liste_titre">'; @@ -278,42 +279,44 @@ if ($result) { $objp->code_sell_l = ''; $objp->code_sell_p = ''; $objp->aarowid_suggest = ''; - $code_sell_p_l_differ = ''; $code_sell_p_notset = ''; $objp->aarowid_suggest = $objp->aarowid; - if (! empty($objp->code_sell)) { - $objp->code_sell_p = $objp->code_sell; - } else { - $code_sell_p_notset = 'color:red'; - if ($objp->type == 1) { - $objp->code_sell_p = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef")); - } elseif ($objp->type == 0) { - $objp->code_sell_p = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef")); - } - } if ($objp->type_l == 1) { - $objp->code_sell_l = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef")); + $objp->code_sell_l = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : ''); if ($objp->aarowid == '') { $objp->aarowid_suggest = $aarowid_s; } } elseif ($objp->type_l == 0) { - $objp->code_sell_l = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef")); + $objp->code_sell_l = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : ''); if ($objp->aarowid == '') { $objp->aarowid_suggest = $aarowid_p; } } - if ($objp->code_sell_l != $objp->code_sell_p) - $code_sell_p_l_differ = 'color:red'; + if ($objp->code_sell_l == -1) $objp->code_sell_l=''; + if (! empty($objp->code_sell)) { + $objp->code_sell_p = $objp->code_sell; // Code on product + } else { + $code_sell_p_notset = 'color:orange'; + } + if (empty($objp->code_sell_l) && empty($objp->code_sell_p)) $code_sell_p_notset = 'color:red'; + + // $objp->code_sell_p is now code of product/service + // $objp->code_sell_l is now default code of product/service + print '<tr '. $bc[$var].'>'; + // Line id + print '<td align="center">' . $objp->rowid . '</td>'; + // Ref Invoice $facture_static->ref = $objp->facnumber; $facture_static->id = $objp->facid; $facture_static->type = $objp->ftype; print '<td>' . $facture_static->getNomUrl(1) . '</td>'; + // Ref Product $product_static->ref = $objp->product_ref; $product_static->id = $objp->product_id; @@ -327,9 +330,9 @@ if ($result) { print '</td>'; - print '<td style="' . $code_sell_p_l_differ . '">' . dol_trunc($objp->product_label, 24) . '</td>'; + print '<td>' . dol_trunc($objp->product_label, 24) . '</td>'; $trunclength = defined('ACCOUNTING_LENGTH_DESCRIPTION') ? ACCOUNTING_LENGTH_DESCRIPTION : 32; - print '<td style="' . $code_sell_p_l_differ . '">' . nl2br(dol_trunc($objp->description, $trunclength)) . '</td>'; + print '<td>' . nl2br(dol_trunc($objp->description, $trunclength)) . '</td>'; print '<td align="right">'; print price($objp->total_ht); @@ -342,15 +345,13 @@ if ($result) { print price($objp->tva_tx_line); print '</td>'; - // Accounting account suggested + // Suggested accounting account print '<td align="center" style="' . $code_sell_p_notset . '">'; - if ($objp->code_sell_l == $objp->code_sell_p) { // Test if there is a difference between code by default and code on product - if ($objp->code_sell_l > 0) print $objp->code_sell_l; - else print $langs->trans("Unknown"); - } else { - print $langs->trans("Default") . ' = ' . ($objp->code_sell_l > 0 ? $objp->code_sell_l : $langs->trans("Unknown")); - print '<br>'; - print $langs->trans("Product") . ' = ' . ($objp->code_sell_p > 0 ? $objp->code_sell_p : $langs->trans("Unknown")); + print (($objp->type_l == 1)?$langs->trans("DefaultForService"):$langs->trans("DefaultForProduct")) . ' = ' . ($objp->code_sell_l > 0 ? length_accountg($objp->code_sell_l) : $langs->trans("Unknown")); + if ($objp->product_id > 0) + { + print '<br>'; + print (($objp->type_l == 1)?$langs->trans("ThisService"):$langs->trans("ThisProduct")) . ' = ' . (empty($objp->code_sell_p) ? $langs->trans("Unknown") : length_accountg($objp->code_sell_p)); } print '</td>'; @@ -358,9 +359,6 @@ if ($result) { print $formventilation->select_account($objp->aarowid_suggest, 'codeventil'.$objp->rowid, 1); print '</td>'; - // Line id - print '<td align="center">' . $objp->rowid . '</td>'; - print '<td align="right">'; print '<input type="checkbox" class="checkforaction" name="mesCasesCochees[]" value="' . $objp->rowid . "_" . $i . '"' . ($objp->aarowid ? "checked" : "") . '/>'; print '</td>'; diff --git a/htdocs/accountancy/expensereport/lines.php b/htdocs/accountancy/expensereport/lines.php index 9720aba485dbba9de5687cf602d9139a785e45d9..14a3d69a4ea88e22ddeaa5305d4016c82f833b73 100644 --- a/htdocs/accountancy/expensereport/lines.php +++ b/htdocs/accountancy/expensereport/lines.php @@ -230,24 +230,25 @@ if ($result) { print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n"; print '<tr class="liste_titre">'; + print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "erd.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("ExpenseReport"), $_SERVER["PHP_SELF"], "er.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("TypeFees"), $_SERVER["PHP_SELF"], "f.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Description"), $_SERVER["PHP_SELF"], "erd.comments", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Amount"), $_SERVER["PHP_SELF"], "erd.total_ht", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "erd.tva_tx", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Account"), $_SERVER["PHP_SELF"], "aa.account_number", "", $param, 'align="center"', $sortfield, $sortorder); - print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "erd.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre(''); print_liste_field_titre('', '', '', '', '', 'align="center"'); print "</tr>\n"; - print '<tr class="liste_titre"><td><input type="text" class="flat" name="search_expensereport" size="10" value="' . $search_expensereport . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_desc" value="' . $search_desc . '"></td>'; + print '<tr class="liste_titre">'; + print '<td class="liste_titre" align="right"></td>'; + print '<td><input type="text" class="flat" name="search_expensereport" size="6" value="' . $search_expensereport . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>'; print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>'; print '<td class="liste_titre" align="center"><input type="text" class="flat" size="3" name="search_vat" value="' . $search_vat . '"></td>'; - print '<td class="liste_titre" align="center"><input type="text" class="flat" size="10" name="search_account" value="' . $search_account . '"></td>'; - print '<td class="liste_titre" align="right"></td>'; + print '<td class="liste_titre" align="center"><input type="text" class="flat" size="6" name="search_account" value="' . $search_account . '"></td>'; print '<td class="liste_titre" align="right"></td>'; print '<td class="liste_titre" align="right">'; $searchpicto=$form->showFilterAndCheckAddButtons(1); @@ -265,6 +266,8 @@ if ($result) { print '<tr '. $bc[$var].'>'; + print '<td align="right">' . $objp->rowid . '</td>'; + // Ref Invoice $expensereport_static->ref = $objp->ref; $expensereport_static->id = $objp->erid; @@ -281,8 +284,6 @@ if ($result) { print '<td>' . $codeCompta . '</td>'; - print '<td align="right">' . $objp->rowid . '</td>'; - print '<td align="left"><a href="./card.php?id=' . $objp->rowid . '">'; print img_edit(); print '</a></td>'; diff --git a/htdocs/accountancy/expensereport/list.php b/htdocs/accountancy/expensereport/list.php index 943105a00faebb4feb6bf2ec860e8e429e079082..b9e929cab0438233eee13fa52e3f7aa13f5ce3c4 100644 --- a/htdocs/accountancy/expensereport/list.php +++ b/htdocs/accountancy/expensereport/list.php @@ -233,6 +233,7 @@ if ($result) { print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n"; print '<tr class="liste_titre">'; + print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "erd.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("ExpenseReport"), $_SERVER["PHP_SELF"], "er.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("TypeFees"), $_SERVER["PHP_SELF"], "f.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Description"), $_SERVER["PHP_SELF"], "erd.comments", "", $param, '', $sortfield, $sortorder); @@ -240,19 +241,18 @@ if ($result) { print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "erd.tva_tx", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("AccountAccountingSuggest"), '', '', '', '', 'align="center"'); print_liste_field_titre($langs->trans("IntoAccount"), '', '', '', '', 'align="center"'); - print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "erd.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre('', '', '', '', '', 'align="center"'); print "</tr>\n"; print '<tr class="liste_titre">'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_expensereport" value="' . $search_expensereport . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_desc" value="' . $search_desc . '"></td>'; + print '<td class="liste_titre"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_expensereport" value="' . $search_expensereport . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>'; print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>'; print '<td class="liste_titre" align="right"><input type="text" class="flat" size="5" name="search_vat" value="' . $search_vat . '"></td>'; print '<td class="liste_titre"></td>'; print '<td class="liste_titre"></td>'; - print '<td class="liste_titre"></td>'; print '<td align="right" class="liste_titre">'; $searchpicto=$form->showFilterAndCheckAddButtons(1); print $searchpicto; @@ -272,6 +272,9 @@ if ($result) { print '<tr '. $bc[$var].'>'; + // Line id + print '<td align="center">' . $objp->rowid . '</td>'; + // Ref Expense report $expensereport_static->ref = $objp->ref; $expensereport_static->id = $objp->erid; @@ -306,9 +309,6 @@ if ($result) { print $formventilation->select_account($objp->aarowid_suggest, 'codeventil'.$objp->rowid, 1); print '</td>'; - // Line id - print '<td align="center">' . $objp->rowid . '</td>'; - // Colonne choix ligne a ventiler print '<td align="right">'; print '<input type="checkbox" class="checkforaction" name="mesCasesCochees[]" value="' . $objp->rowid . "_" . $i . '"' . ($objp->aarowid ? "checked" : "") . '/>'; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index 94af5c82dba99807ff286cc11897840b72c1ecab..09422eb5b9311b22cd2785fe4753c305b2402cfb 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -82,7 +82,7 @@ $formventilation = new FormVentilation($db); */ // Purge search criteria -if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers +if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // All tests are required to be compatible with all browsers { $search_ref = ''; $search_invoice = ''; @@ -237,6 +237,7 @@ if ($result) { print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n"; print '<tr class="liste_titre">'; + print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Invoice"), $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder); @@ -244,20 +245,20 @@ if ($result) { print_liste_field_titre($langs->trans("Amount"), $_SERVER["PHP_SELF"], "l.total_ht", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Account"), $_SERVER["PHP_SELF"], "aa.account_number", "", $param, 'align="center"', $sortfield, $sortorder); - print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre(''); print_liste_field_titre('', '', '', '', '', 'align="center"'); print "</tr>\n"; - print '<tr class="liste_titre"><td><input type="text" class="flat" name="search_invoice" size="10" value="' . $search_invoice . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_ref" value="' . $search_ref . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_desc" value="' . $search_desc . '"></td>'; + print '<tr class="liste_titre">'; + print '<td class="liste_titre"></td>'; + print '<td><input type="text" class="flat" name="search_invoice" size="6" value="' . $search_invoice . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_ref" value="' . $search_ref . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>'; print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>'; print '<td class="liste_titre" align="center"><input type="text" class="flat" size="3" name="search_vat" value="' . $search_vat . '"></td>'; - print '<td class="liste_titre" align="center"><input type="text" class="flat" size="10" name="search_account" value="' . $search_account . '"></td>'; + print '<td class="liste_titre" align="center"><input type="text" class="flat" size="6" name="search_account" value="' . $search_account . '"></td>'; print '<td class="liste_titre" align="right"></td>'; - print '<td class="liste_titre" align="right"></td>'; print '<td class="liste_titre" align="right">'; $searchpitco=$form->showFilterAndCheckAddButtons(1); print $searchpitco; @@ -275,6 +276,8 @@ if ($result) { print '<tr '. $bc[$var].'>'; + print '<td align="right">' . $objp->rowid . '</td>'; + // Ref Invoice $facturefournisseur_static->ref = $objp->facnumber; $facturefournisseur_static->id = $objp->facid; @@ -297,7 +300,6 @@ if ($result) { print '<td align="right">' . price($objp->total_ht) . '</td>'; print '<td align="center">' . price($objp->tva_tx) . '</td>'; print '<td>' . $codeCompta . '</td>'; - print '<td align="right">' . $objp->rowid . '</td>'; print '<td align="left"><a href="./card.php?id=' . $objp->rowid . '">'; print img_edit(); print '</a></td>'; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index bd0dac490960d96734299a49ab1ab9a345ac663e..e103c35810a7336c7afbb05799e1671c27fa9232 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -164,9 +164,10 @@ if ($action == 'ventil' && ! empty($btn_ventil)) { llxHeader('', $langs->trans("SuppliersVentilation")); // Supplier Invoice Lines -$sql = "SELECT f.ref, f.rowid as facid, f.ref_supplier, f.datef, l.fk_product, l.description, l.total_ht as price, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, "; -$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_buy as code_buy, p.tva_tx as tva_tx_prod"; -$sql .= " , aa.rowid as aarowid"; +$sql = "SELECT f.ref, f.rowid as facid, f.ref_supplier, f.datef,"; +$sql .= " l.fk_product, l.description, l.total_ht as price, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, "; +$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_buy as code_buy, p.tva_tx as tva_tx_prod,"; +$sql .= " aa.rowid as aarowid"; $sql .= " FROM " . MAIN_DB_PREFIX . "facture_fourn as f"; $sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facture_fourn_det as l ON f.rowid = l.fk_facture_fourn"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product"; @@ -243,6 +244,7 @@ if ($result) { print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n"; print '<tr class="liste_titre">'; + print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Invoice"), $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder); @@ -251,20 +253,19 @@ if ($result) { print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("AccountAccountingSuggest"), '', '', '', '', 'align="center"'); print_liste_field_titre($langs->trans("IntoAccount"), '', '', '', '', 'align="center"'); - print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder); print_liste_field_titre('', '', '', '', '', 'align="center"'); print "</tr>\n"; print '<tr class="liste_titre">'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_invoice" value="' . $search_invoice . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_ref" value="' . $search_ref . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_desc" value="' . $search_desc . '"></td>'; + print '<td class="liste_titre"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_invoice" value="' . $search_invoice . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_ref" value="' . $search_ref . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>'; print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>'; print '<td class="liste_titre" align="right"><input type="text" class="flat" size="5" name="search_vat" value="' . $search_vat . '"></td>'; print '<td class="liste_titre"></td>'; print '<td class="liste_titre"></td>'; - print '<td class="liste_titre"></td>'; print '<td align="right" class="liste_titre">'; $searchpitco=$form->showFilterAndCheckAddButtons(1); print $searchpitco; @@ -286,39 +287,36 @@ if ($result) { $objp->code_buy_l = ''; $objp->code_buy_p = ''; $objp->aarowid_suggest = ''; - $code_buy_p_l_differ = ''; $code_buy_p_notset = ''; - $objp->aarowid_suggest = $objp->aarowid; - if (! empty($objp->code_buy)) { - $objp->code_buy_p = $objp->code_buy; - } else { - $code_buy_p_notset = 'color:red'; - if ($objp->type == 1) { - $objp->code_buy_p = (! empty($conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT : $langs->trans("CodeNotDef")); - } - - elseif ($objp->type == 0) { - $objp->code_buy_p = (! empty($conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT : $langs->trans("CodeNotDef")); - } - } if ($objp->type_l == 1) { - $objp->code_buy_l = (! empty($conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT : $langs->trans("CodeNotDef")); + $objp->code_buy_l = (! empty($conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT : ''); if ($objp->aarowid == '') $objp->aarowid_suggest = $aarowid_s; } elseif ($objp->type_l == 0) { - $objp->code_buy_l = (! empty($conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT : $langs->trans("CodeNotDef")); + $objp->code_buy_l = (! empty($conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT : ''); if ($objp->aarowid == '') $objp->aarowid_suggest = $aarowid_p; } - - if ($objp->code_buy_l != $objp->code_buy_p) - $code_buy_p_l_differ = 'color:red'; + if ($objp->code_buy_l == -1) $objp->code_buy_l=''; + + if (! empty($objp->code_buy)) { + $objp->code_buy_p = $objp->code_buy; + } else { + $code_buy_p_notset = 'color:orange'; + } + if (empty($objp->code_buy_l) && empty($objp->code_buy_p)) $code_buy_p_notset = 'color:red'; + // $objp->code_buy_p is now code of product/service + // $objp->code_buy_l is now default code of product/service + print '<tr '. $bc[$var].'>'; + // Line id + print '<td align="center">' . $objp->rowid . '</td>'; + // Ref Invoice $facturefourn_static->ref = $objp->ref; $facturefourn_static->id = $objp->facid; @@ -335,11 +333,11 @@ if ($result) { print ' '; print '</td>'; - print '<td style="' . $code_buy_p_l_differ . '">' . dol_trunc($objp->product_label, 24) . '</td>'; + print '<td>' . dol_trunc($objp->product_label, 24) . '</td>'; // TODO: we should set a user defined value to adjust user square / wide screen size $trunclength = defined('ACCOUNTING_LENGTH_DESCRIPTION') ? ACCOUNTING_LENGTH_DESCRIPTION : 32; - print '<td style="' . $code_buy_p_l_differ . '">' . nl2br(dol_trunc($objp->description, $trunclength)) . '</td>'; + print '<td>' . nl2br(dol_trunc($objp->description, $trunclength)) . '</td>'; print '<td align="right">'; print price($objp->price); @@ -354,24 +352,19 @@ if ($result) { // Accounting account suggested print '<td align="center" style="' . $code_buy_p_notset . '">'; - if ($objp->code_buy_l == $objp->code_buy_p) { // Test if there is a difference between code by default and code on product - if ($objp->code_buy_l > 0) print $objp->code_buy_l; - else print $langs->trans("Unknown"); - } else { - print $langs->trans("Default") . ' = ' . ($objp->code_buy_l > 0 ? $objp->code_buy_l : $langs->trans("Unknown")); + print (($objp->type_l == 1)?$langs->trans("DefaultForService"):$langs->trans("DefaultForProduct")) . ' = ' . ($objp->code_buy_l > 0 ? length_accountg($objp->code_buy_l) : $langs->trans("Unknown")); + if ($objp->product_id > 0) + { print '<br>'; - print $langs->trans("Product") . ' = ' . ($objp->code_buy_p > 0 ? $objp->code_buy_p : $langs->trans("Unknown")); + print (($objp->type_l == 1)?$langs->trans("ThisService"):$langs->trans("ThisProduct")) . ' = ' . (empty($objp->code_buy_p) ? $langs->trans("Unknown") : length_accountg($objp->code_buy_p)); } print '</td>'; - // Colonne choix du compte + // Suggested accounting account print '<td align="center">'; print $formventilation->select_account($objp->aarowid_suggest, 'codeventil'.$objp->rowid, 1); print '</td>'; - // Line id - print '<td align="center">' . $objp->rowid . '</td>'; - // Colonne choix ligne a ventiler print '<td align="right">'; print '<input type="checkbox" class="checkforaction" name="mesCasesCochees[]" value="' . $objp->rowid . "_" . $i . '"' . ($objp->aarowid ? "checked" : "") . '/>'; diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 191b23bea323e92ec490cdf6b4fa9e6943f0d051..79aa64fb1abaaaf7932f768e4a25d551b9b83666 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -1146,12 +1146,12 @@ class Adherent extends CommonObject $this->birth = $this->db->jdate($obj->birthday); $this->note_private = $obj->note_private; - $this->note_public = $obj->note_public; + $this->note_public = $obj->note_public; $this->morphy = $obj->morphy; $this->typeid = $obj->fk_adherent_type; - $this->type = $obj->type; - $this->need_subscription = ($obj->subscription=='yes'?1:0); + $this->type = $obj->type; + $this->need_subscription = $obj->subscription; $this->user_id = $obj->user_id; $this->user_login = $obj->user_login; @@ -1682,6 +1682,17 @@ class Adherent extends CommonObject if ($statut == 0) return img_picto($langs->trans('MemberStatusResiliated'),'statut5').' '.$langs->trans("MemberStatusResiliated"); } if ($mode == 5) + { + if ($statut == -1) return $langs->trans("MemberStatusDraft").' '.img_picto($langs->trans('MemberStatusDraft'),'statut0'); + if ($statut >= 1) + { + if (! $date_end_subscription) return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusActiveShort").' </span>'.img_picto($langs->trans('MemberStatusActive'),'statut1'); + elseif ($date_end_subscription < time()) return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusActiveLateShort").' </span>'.img_picto($langs->trans('MemberStatusActiveLate'),'statut3'); + else return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusPaidShort").' </span>'.img_picto($langs->trans('MemberStatusPaid'),'statut4'); + } + if ($statut == 0) return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusResiliated").' </span>'.img_picto($langs->trans('MemberStatusResiliated'),'statut5'); + } + if ($mode == 6) { if ($statut == -1) return $langs->trans("MemberStatusDraft").' '.img_picto($langs->trans('MemberStatusDraft'),'statut0'); if ($statut >= 1) diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index c98ad4abf3117c64870399d0b1d284a6c4de4ded..0727002aa59087806a51c6219a321e271a5e8139 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -809,7 +809,7 @@ while ($i < $num && $i < $conf->liste_limit) if (! empty($arrayfields['d.statut']['checked'])) { print '<td align="right" class="nowrap">'; - print $memberstatic->LibStatut($obj->statut,$obj->subscription,$datefin,2); + print $memberstatic->LibStatut($obj->statut,$obj->subscription,$datefin,5); print '</td>'; if (! $i) $totalarray['nbfield']++; } diff --git a/htdocs/admin/agenda_other.php b/htdocs/admin/agenda_other.php index 9ea048c27fdbf103840a16f7e277029fa7be4fe5..e6bb4a2914f3643c16b8435536faec7a0a1ee9eb 100644 --- a/htdocs/admin/agenda_other.php +++ b/htdocs/admin/agenda_other.php @@ -1,9 +1,9 @@ <?php -/* Copyright (C) 2008-2015 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2008-2016 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2011 Regis Houssin <regis.houssin@capnetworks.com> - * Copyright (C) 2011-2013 Juanjo Menent <jmenent@2byte.es> - * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> - * Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com> + * Copyright (C) 2011-2013 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> + * Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/agenda.lib.php'; -require_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; if (!$user->admin) accessforbidden(); @@ -370,6 +370,7 @@ print '</td></tr>'."\n"; if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) { $var=!$var; + print '<!-- AGENDA_USE_EVENT_TYPE_DEFAULT -->'; print '<tr '.$bc[$var].'>'."\n"; print '<td>'.$langs->trans("AGENDA_USE_EVENT_TYPE_DEFAULT").'</td>'."\n"; print '<td align="center"> </td>'."\n"; @@ -384,7 +385,7 @@ print '<tr '.$bc[$var].'>'."\n"; print '<td>'.$langs->trans("AGENDA_DEFAULT_FILTER_TYPE").'</td>'."\n"; print '<td align="center"> </td>'."\n"; print '<td align="right" class="nowrap">'."\n"; -$formactions->select_type_actions($conf->global->AGENDA_DEFAULT_FILTER_TYPE, "AGENDA_DEFAULT_FILTER_TYPE", '', (empty($conf->global->AGENDA_USE_EVENT_TYPE) ? 1 : 0), 1); +$formactions->select_type_actions($conf->global->AGENDA_DEFAULT_FILTER_TYPE, "AGENDA_DEFAULT_FILTER_TYPE", '', (empty($conf->global->AGENDA_USE_EVENT_TYPE) ? 1 : -1), 1); print '</td></tr>'."\n"; // AGENDA_DEFAULT_FILTER_STATUS @@ -393,7 +394,7 @@ print '<tr '.$bc[$var].'>'."\n"; print '<td>'.$langs->trans("AGENDA_DEFAULT_FILTER_STATUS").'</td>'."\n"; print '<td align="center"> </td>'."\n"; print '<td align="right">'."\n"; -$formactions->form_select_status_action('agenda',$conf->global->AGENDA_DEFAULT_FILTER_STATUS,1,'AGENDA_DEFAULT_FILTER_STATUS',1,2); +$formactions->form_select_status_action('agenda', $conf->global->AGENDA_DEFAULT_FILTER_STATUS, 1, 'AGENDA_DEFAULT_FILTER_STATUS', 1, 2); print '</td></tr>'."\n"; // AGENDA_DEFAULT_VIEW diff --git a/htdocs/admin/confexped.php b/htdocs/admin/confexped.php index bf4a09c0ada5fe86286bd83e2b9c5b28fe11fe35..859534d53fd352e7ce64bbb4df84b3a74ccee8f2 100644 --- a/htdocs/admin/confexped.php +++ b/htdocs/admin/confexped.php @@ -87,14 +87,14 @@ else if ($action == 'disable_delivery') $dir = DOL_DOCUMENT_ROOT."/core/modules/expedition/"; $form=new Form($db); -llxHeader("",""); +llxHeader("",$langs->trans("SendingsSetup")); $linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>'; print load_fiche_titre($langs->trans("SendingsSetup"),$linkback,'title_setup'); print '<br>'; $head = expedition_admin_prepare_head(); -dol_fiche_head($head, 'general', $langs->trans("ModuleSetup"), 0, 'sending'); +dol_fiche_head($head, 'general', $langs->trans("Sendings"), 0, 'sending'); /* * Formulaire parametres divers diff --git a/htdocs/admin/expedition.php b/htdocs/admin/expedition.php index 42741b49c7ae7aad54b302f8b05a541b4bf0b19c..34a561121b2c3a238a0f2760a5711804482222ed 100644 --- a/htdocs/admin/expedition.php +++ b/htdocs/admin/expedition.php @@ -215,7 +215,7 @@ $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); $form=new Form($db); -llxHeader("",""); +llxHeader("",$langs->trans("SendingsSetup")); $linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>'; print load_fiche_titre($langs->trans("SendingsSetup"),$linkback,'title_setup'); diff --git a/htdocs/admin/supplier_order.php b/htdocs/admin/supplier_order.php index 5d0cf665d7cbf915953a111c4ea7035099c6a200..5c288b9e78ac312497b3dc00793a7135c9e85a16 100644 --- a/htdocs/admin/supplier_order.php +++ b/htdocs/admin/supplier_order.php @@ -497,7 +497,7 @@ $var=false; print $form->textwithpicto($langs->trans("UseDoubleApproval"), $langs->trans("Use3StepsApproval"), 1, 'help').'<br>'; print $langs->trans("IfSetToYesDontForgetPermission"); print '</td><td>'; - print '<input type="text" size="3" name="SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED" value="'.$conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED.'">'; + print '<input type="text" size="6" name="SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED" value="'.$conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED.'">'; print '</td><td align="right">'; print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">'; print "</td></tr>\n"; diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php index 365cfaa449dabcaf0689aa422a2493938fc4af01..ff7a16d1893ba9b94cc0af25c85be95ce4f5e6ba 100644 --- a/htdocs/admin/system/database.php +++ b/htdocs/admin/system/database.php @@ -88,7 +88,7 @@ else { $arraytest=array( 'character_set_database'=>array('var'=>'dolibarr_main_db_character_set','valifempty'=>'utf8'), - 'collation_database'=>array('var'=>'dolibarr_main_db_collation','valifempty'=>'utf8_general_ci') + 'collation_database'=>array('var'=>'dolibarr_main_db_collation','valifempty'=>'utf8_unicode_ci') ); } diff --git a/htdocs/admin/system/dolibarr.php b/htdocs/admin/system/dolibarr.php index eeea93a2feaef1adb34c64c71466534dce48407d..2fe87a02e632bc8453da490ec4c8dba15a1ea557 100644 --- a/htdocs/admin/system/dolibarr.php +++ b/htdocs/admin/system/dolibarr.php @@ -40,20 +40,22 @@ if (! $user->admin) $form=new Form($db); -llxHeader(); +$title=$langs->trans("InfoDolibarr"); -print load_fiche_titre($langs->trans("InfoDolibarr"),'','title_setup'); +llxHeader('', $title); + +print load_fiche_titre($title,'','title_setup'); // Version $var=true; print '<table class="noborder" width="100%">'; -print '<tr class="liste_titre"><td>'.$langs->trans("Version").'</td><td>'.$langs->trans("Value").'</td></tr>'."\n"; +print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("Version").'</td><td>'.$langs->trans("Value").'</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("VersionLastInstall").'</td><td>'.$conf->global->MAIN_VERSION_LAST_INSTALL.'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td>'.$langs->trans("VersionLastInstall").'</td><td>'.$conf->global->MAIN_VERSION_LAST_INSTALL.'</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("VersionLastUpgrade").'</td><td>'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td>'.$langs->trans("VersionLastUpgrade").'</td><td>'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("VersionProgram").'</td><td>'.DOL_VERSION; +print '<tr '.$bc[$var].'><td>'.$langs->trans("VersionProgram").'</td><td>'.DOL_VERSION; // If current version differs from last upgrade if (empty($conf->global->MAIN_VERSION_LAST_UPGRADE)) { @@ -72,30 +74,30 @@ print '<br>'; // Session $var=true; print '<table class="noborder" width="100%">'; -print '<tr class="liste_titre"><td>'.$langs->trans("Session").'</td><td colspan="2">'.$langs->trans("Value").'</td></tr>'."\n"; +print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("Session").'</td><td colspan="2">'.$langs->trans("Value").'</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("SessionSavePath").'</td><td colspan="2">'.session_save_path().'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td>'.$langs->trans("SessionSavePath").'</td><td colspan="2">'.session_save_path().'</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("SessionName").'</td><td colspan="2">'.session_name().'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td>'.$langs->trans("SessionName").'</td><td colspan="2">'.session_name().'</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("SessionId").'</td><td colspan="2">'.session_id().'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td>'.$langs->trans("SessionId").'</td><td colspan="2">'.session_id().'</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentSessionTimeOut").'</td><td>'.ini_get('session.gc_maxlifetime').' '.$langs->trans("seconds"); +print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentSessionTimeOut").'</td><td>'.ini_get('session.gc_maxlifetime').' '.$langs->trans("seconds"); print '</td><td align="right">'; print $form->textwithpicto('',$langs->trans("SessionExplanation",ini_get("session.gc_probability"),ini_get("session.gc_divisor"))); print "</td></tr>\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentTheme").'</td><td colspan="2">'.$conf->theme.'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentTheme").'</td><td colspan="2">'.$conf->theme.'</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentMenuHandler").'</td><td colspan="2">'; +print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentMenuHandler").'</td><td colspan="2">'; print $conf->standard_menu; print '</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("Screen").'</td><td colspan="2">'; +print '<tr '.$bc[$var].'><td>'.$langs->trans("Screen").'</td><td colspan="2">'; print $_SESSION['dol_screenwidth'].' x '.$_SESSION['dol_screenheight']; print '</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("Session").'</td><td colspan="2">'; +print '<tr '.$bc[$var].'><td>'.$langs->trans("Session").'</td><td colspan="2">'; $i=0; foreach($_SESSION as $key => $val) { @@ -116,7 +118,7 @@ if (isset($conf->global->MAIN_OPTIMIZE_SPEED) && ($conf->global->MAIN_OPTIMIZE_S $var=true; print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; - print '<td>'.$langs->trans("LanguageFilesCachedIntoShmopSharedMemory").'</td>'; + print '<td class="titlefield">'.$langs->trans("LanguageFilesCachedIntoShmopSharedMemory").'</td>'; print '<td>'.$langs->trans("NbOfEntries").'</td>'; print '<td align="right">'.$langs->trans("Address").'</td>'; print '</tr>'."\n"; @@ -124,7 +126,7 @@ if (isset($conf->global->MAIN_OPTIMIZE_SPEED) && ($conf->global->MAIN_OPTIMIZE_S foreach($shmoparray as $key => $val) { $var=!$var; - print '<tr '.$bc[$var].'><td width="300">'.$key.'</td>'; + print '<tr '.$bc[$var].'><td>'.$key.'</td>'; print '<td>'.count($val).'</td>'; print '<td align="right">'.dol_getshmopaddress($key).'</td>'; print '</tr>'."\n"; @@ -138,41 +140,41 @@ if (isset($conf->global->MAIN_OPTIMIZE_SPEED) && ($conf->global->MAIN_OPTIMIZE_S // Localisation $var=true; print '<table class="noborder" width="100%">'; -print '<tr class="liste_titre"><td>'.$langs->trans("LocalisationDolibarrParameters").'</td><td>'.$langs->trans("Value").'</td></tr>'."\n"; +print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("LocalisationDolibarrParameters").'</td><td>'.$langs->trans("Value").'</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("LanguageBrowserParameter","HTTP_ACCEPT_LANGUAGE").'</td><td>'.$_SERVER["HTTP_ACCEPT_LANGUAGE"].'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LanguageBrowserParameter","HTTP_ACCEPT_LANGUAGE").'</td><td>'.$_SERVER["HTTP_ACCEPT_LANGUAGE"].'</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentUserLanguage").'</td><td>'.$langs->getDefaultLang().'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentUserLanguage").'</td><td>'.$langs->getDefaultLang().'</td></tr>'."\n"; // Thousands $var=!$var; $thousand=$langs->transnoentitiesnoconv("SeparatorThousand"); if ($thousand == 'SeparatorThousand') $thousand=' '; // ' ' does not work on trans method if ($thousand == 'None') $thousand=''; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentValueSeparatorThousand").'</td><td>'.($thousand==' '?$langs->transnoentitiesnoconv("Space"):$thousand).'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentValueSeparatorThousand").'</td><td>'.($thousand==' '?$langs->transnoentitiesnoconv("Space"):$thousand).'</td></tr>'."\n"; // Decimals $var=!$var; $dec=$langs->transnoentitiesnoconv("SeparatorDecimal"); -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentValueSeparatorDecimal").'</td><td>'.$dec.'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentValueSeparatorDecimal").'</td><td>'.$dec.'</td></tr>'."\n"; // Show results of functions to see if everything works $var=!$var; -print '<tr '.$bc[$var].'><td width="300"> => price2num(1233.56+1)</td><td>'.price2num(1233.56+1,'2').'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td> => price2num(1233.56+1)</td><td>'.price2num(1233.56+1,'2').'</td></tr>'."\n"; $var=!$var; -print "<tr ".$bc[$var].'><td width="300"> => price2num('."'1".$thousand."234".$dec."56')</td><td>".price2num("1".$thousand."234".$dec."56",'2')."</td></tr>\n"; +print "<tr ".$bc[$var].'><td> => price2num('."'1".$thousand."234".$dec."56')</td><td>".price2num("1".$thousand."234".$dec."56",'2')."</td></tr>\n"; if (($thousand != ',' && $thousand != '.') || ($thousand != ' ')) { $var=!$var; - print "<tr ".$bc[$var].'><td width="300"> => price2num('."'1 234.56')</td><td>".price2num("1 234.56",'2')."</td>"; + print "<tr ".$bc[$var].'><td> => price2num('."'1 234.56')</td><td>".price2num("1 234.56",'2')."</td>"; print "</tr>\n"; } $var=!$var; -print '<tr '.$bc[$var].'><td width="300"> => price(1234.56)</td><td>'.price(1234.56).'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td> => price(1234.56)</td><td>'.price(1234.56).'</td></tr>'."\n"; // Timezone $txt =$langs->trans("OSTZ").' (variable system TZ): '.(! empty($_ENV["TZ"])?$_ENV["TZ"]:$langs->trans("NotDefined")).'<br>'."\n"; $txt.=$langs->trans("PHPTZ").' (php.ini date.timezone): '.(ini_get("date.timezone")?ini_get("date.timezone"):$langs->trans("NotDefined")).''."<br>\n"; // date.timezone must be in valued defined in http://fr3.php.net/manual/en/timezones.europe.php $txt.=$langs->trans("Dolibarr constant MAIN_SERVER_TZ").': '.(empty($conf->global->MAIN_SERVER_TZ)?$langs->trans("NotDefined"):$conf->global->MAIN_SERVER_TZ); //$txt.=$langs->trans("YouCanEditPHPTZ"); // deprecated $var=!$var; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentTimeZone").'</td><td>'; // Timezone server PHP +print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentTimeZone").'</td><td>'; // Timezone server PHP $a=getServerTimeZoneInt('now'); $b=getServerTimeZoneInt('winter'); $c=getServerTimeZoneInt('summer'); @@ -185,18 +187,18 @@ $val.=' '.$langs->trans("DaylingSavingTime").': '.($dayligh print $form->textwithtooltip($val,$txt,2,1,img_info('')); print '</td></tr>'."\n"; // value defined in http://fr3.php.net/manual/en/timezones.europe.php $var=!$var; -print '<tr '.$bc[$var].'><td width="300"> => '.$langs->trans("CurrentHour").'</td><td>'.dol_print_date(dol_now(),'dayhour','tzserver').'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td> => '.$langs->trans("CurrentHour").'</td><td>'.dol_print_date(dol_now(),'dayhour','tzserver').'</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300"> => dol_print_date(0,"dayhourtext")</td><td>'.dol_print_date(0,"dayhourtext").'</td>'; +print '<tr '.$bc[$var].'><td> => dol_print_date(0,"dayhourtext")</td><td>'.dol_print_date(0,"dayhourtext").'</td>'; $var=!$var; -print '<tr '.$bc[$var].'><td width="300"> => dol_get_first_day(1970,1,false)</td><td>'.dol_get_first_day(1970,1,false).' (=> dol_print_date() or idate() of this value = '.dol_print_date(dol_get_first_day(1970,1,false),'dayhour').')</td>'; +print '<tr '.$bc[$var].'><td> => dol_get_first_day(1970,1,false)</td><td>'.dol_get_first_day(1970,1,false).' (=> dol_print_date() or idate() of this value = '.dol_print_date(dol_get_first_day(1970,1,false),'dayhour').')</td>'; $var=!$var; -print '<tr '.$bc[$var].'><td width="300"> => dol_get_first_day(1970,1,true)</td><td>'.dol_get_first_day(1970,1,true).' (=> dol_print_date() or idate() of this value = '.dol_print_date(dol_get_first_day(1970,1,true),'dayhour').')</td>'; +print '<tr '.$bc[$var].'><td> => dol_get_first_day(1970,1,true)</td><td>'.dol_get_first_day(1970,1,true).' (=> dol_print_date() or idate() of this value = '.dol_print_date(dol_get_first_day(1970,1,true),'dayhour').')</td>'; // Database timezone if ($conf->db->type == 'mysql' || $conf->db->type == 'mysqli') { $var=!$var; - print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("MySQLTimeZone").' (database)</td><td>'; // Timezone server base + print '<tr '.$bc[$var].'><td>'.$langs->trans("MySQLTimeZone").' (database)</td><td>'; // Timezone server base $sql="SHOW VARIABLES where variable_name = 'system_time_zone'"; $resql = $db->query($sql); if ($resql) @@ -209,7 +211,7 @@ if ($conf->db->type == 'mysql' || $conf->db->type == 'mysqli') // Client $var=!$var; $tz=(int) $_SESSION['dol_tz'] + (int) $_SESSION['dol_dst']; -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("ClientTZ").'</td><td>'.($tz?($tz>=0?'+':'').$tz:'').' ('.($tz>=0?'+':'').($tz*60*60).')'; +print '<tr '.$bc[$var].'><td>'.$langs->trans("ClientTZ").'</td><td>'.($tz?($tz>=0?'+':'').$tz:'').' ('.($tz>=0?'+':'').($tz*60*60).')'; print ' '.$_SESSION['dol_tz_string']; print ' '.$langs->trans("DaylingSavingTime").': '; if ($_SESSION['dol_dst']>0) print yn(1); @@ -218,18 +220,18 @@ if (! empty($_SESSION['dol_dst_first'])) print ' ('.dol_print_date print '</td></tr>'."\n"; print '</td></tr>'."\n"; $var=!$var; -print '<tr '.$bc[$var].'><td width="300"> => '.$langs->trans("ClientHour").'</td><td>'.dol_print_date(dol_now(),'dayhour','tzuser').'</td></tr>'."\n"; +print '<tr '.$bc[$var].'><td> => '.$langs->trans("ClientHour").'</td><td>'.dol_print_date(dol_now(),'dayhour','tzuser').'</td></tr>'."\n"; $var=!$var; $filesystemencoding=ini_get("unicode.filesystem_encoding"); // Disponible avec PHP 6.0 -print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("File encoding").' (php.ini unicode.filesystem_encoding)</td><td>'.$filesystemencoding.'</td></tr>'."\n"; // date.timezone must be in valued defined in http://fr3.php.net/manual/en/timezones.europe.php +print '<tr '.$bc[$var].'><td>'.$langs->trans("File encoding").' (php.ini unicode.filesystem_encoding)</td><td>'.$filesystemencoding.'</td></tr>'."\n"; // date.timezone must be in valued defined in http://fr3.php.net/manual/en/timezones.europe.php $var=!$var; $tmp=ini_get("unicode.filesystem_encoding"); // Disponible avec PHP 6.0 if (empty($tmp) && ! empty($_SERVER["WINDIR"])) $tmp='iso-8859-1'; // By default for windows if (empty($tmp)) $tmp='utf-8'; // By default for other if (! empty($conf->global->MAIN_FILESYSTEM_ENCODING)) $tmp=$conf->global->MAIN_FILESYSTEM_ENCODING; -print '<tr '.$bc[$var].'><td width="300"> => '.$langs->trans("File encoding").'</td><td>'.$tmp.'</td></tr>'."\n"; // date.timezone must be in valued defined in http://fr3.php.net/manual/en/timezones.europe.php +print '<tr '.$bc[$var].'><td> => '.$langs->trans("File encoding").'</td><td>'.$tmp.'</td></tr>'."\n"; // date.timezone must be in valued defined in http://fr3.php.net/manual/en/timezones.europe.php print '</table>'; print '<br>'; @@ -291,7 +293,7 @@ $configfileparameters=array( $var=true; print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; -print '<td width="300">'.$langs->trans("Parameters").' '; +print '<td class="titlefield">'.$langs->trans("Parameters").' '; print $langs->trans("ConfigurationFile").' ('.$conffiletoshowshort.')'; print '</td>'; print '<td>'.$langs->trans("Parameter").'</td>'; @@ -357,9 +359,9 @@ print '<br>'; // Parameters in database print '<table class="noborder">'; print '<tr class="liste_titre">'; -print '<td>'.$langs->trans("Parameters").' '.$langs->trans("Database").'</td>'; +print '<td class="titlefield">'.$langs->trans("Parameters").' '.$langs->trans("Database").'</td>'; print '<td>'.$langs->trans("Value").'</td>'; -if (empty($conf->multicompany->enabled) || !$user->entity) print '<td align="center">'.$langs->trans("Entity").'</td>'; // If superadmin or multicompany disabled +if (empty($conf->multicompany->enabled) || !$user->entity) print '<td class="center width="80px"">'.$langs->trans("Entity").'</td>'; // If superadmin or multicompany disabled print "</tr>\n"; $sql = "SELECT"; @@ -394,9 +396,9 @@ if ($resql) $var=!$var; print '<tr '.$bc[$var].'>'; - print '<td>'.$obj->name.'</td>'."\n"; - print '<td>'.$obj->value.'</td>'."\n"; - if (empty($conf->multicompany->enabled) || !$user->entity) print '<td align="center">'.$obj->entity.'</td>'."\n"; // If superadmin or multicompany disabled + print '<td class="tdoverflow">'.$obj->name.'</td>'."\n"; + print '<td class="tdoverflow">'.$obj->value.'</td>'."\n"; + if (empty($conf->multicompany->enabled) || !$user->entity) print '<td align="center" width="80px">'.$obj->entity.'</td>'."\n"; // If superadmin or multicompany disabled print "</tr>\n"; $i++; diff --git a/htdocs/api/class/api.class.php b/htdocs/api/class/api.class.php index 45f2be3e4da35abb1c0fc6b2f04af50b734ee6e0..e3081d1040049270908041ea28b5c551e833d43a 100644 --- a/htdocs/api/class/api.class.php +++ b/htdocs/api/class/api.class.php @@ -23,8 +23,7 @@ use Luracast\Restler\Defaults; require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; /** - * Class for API - * + * Class for API REST v1 */ class DolibarrApi { @@ -55,6 +54,8 @@ class DolibarrApi $this->db = $db; $production_mode = ( empty($conf->global->API_PRODUCTION_MODE) ? false : true ); $this->r = new Restler($production_mode); + + $this->r->setAPIVersion(1); } /** @@ -97,6 +98,7 @@ class DolibarrApi unset($object->statuts); unset($object->statuts_short); unset($object->statuts_logo); + unset($object->statuts_long); // Remove the $oldcopy property because it is not supported by the JSON // encoder. The following error is generated when trying to serialize diff --git a/htdocs/api/index.php b/htdocs/api/index.php index 80cfb5485df80275a7a1ac07cca61819abc932ca..7fe3e6437ac48180922c9d6ba867429fa5c90719 100644 --- a/htdocs/api/index.php +++ b/htdocs/api/index.php @@ -106,7 +106,10 @@ foreach ($modulesdir as $dir) elseif ($module == 'facture') { $moduledirforclass = 'compta/facture'; } - + elseif ($module == 'project') { + $moduledirforclass = 'projet'; + } + // Defined if module is enabled $enabled=true; if (empty($conf->$moduleforperm->enabled)) $enabled=false; @@ -135,7 +138,7 @@ foreach ($modulesdir as $dir) require_once $dir_part.$file_searched; if (class_exists($classname)) { - dol_syslog("Found deprecated API classname=".$classname." into ".$dir); + dol_syslog("Found deprecated API by index.php classname=".$classname." into ".$dir); $api->r->addAPIClass($classname, '/'); } } @@ -145,7 +148,7 @@ foreach ($modulesdir as $dir) require_once $dir_part.$file_searched; if (class_exists($classname)) { - dol_syslog("Found API classname=".$classname." into ".$dir); + dol_syslog("Found API by index.php classname=".$classname." into ".$dir); $listofapis[] = $classname; } } @@ -161,13 +164,14 @@ foreach ($modulesdir as $dir) // shows the classes in the order they are added and it's a mess if they are // not sorted. sort($listofapis); +//var_dump($listofapis); foreach ($listofapis as $classname) { $api->r->addAPIClass($classname); } // TODO If not found, redirect to explorer - +//var_dump($api); // Call API (we suppose we found it) $api->r->handle(); diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index d38270b88273e53e5fddfdef5a67c9967ffd4950..c917925e87e5d3d75767961e36d3100baa2c041f 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -795,7 +795,7 @@ if ($action == 'create') } print '</td></tr>'; } - if(!empty($origin) && !empty($originid)) + if (!empty($origin) && !empty($originid)) { include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; print '<tr><td>'.$langs->trans("LinkedObject").'</td>'; diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 419b32cdea47410163e71765bdaca3de0140928a..f8d2913028c4c20a2cfac2319e88efda31caab63 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -1113,15 +1113,26 @@ class ActionComm extends CommonObject if (! empty($conf->dol_no_mouse_hover)) $notooltip=1; // Force disable tooltips + $label = $this->label; + if (empty($label)) $label=$this->libelle; // For backward compatibility + $result=''; + // Set label of typ + $labeltype = ($langs->transnoentities("Action".$this->type_code) != "Action".$this->type_code)?$langs->transnoentities("Action".$this->type_code):$this->type_label; + if (empty($conf->global->AGENDA_USE_EVENT_TYPE)) + { + if ($this->type_code != 'AC_OTH_AUTO') $labeltype = $langs->trans('ActionAC_MANUAL'); + } + + $tooltip = '<u>' . $langs->trans('ShowAction'.$objp->code) . '</u>'; if (! empty($this->ref)) $tooltip .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref; - $label = $this->label; - if (empty($label)) $label=$this->libelle; // For backward compatibility if (! empty($label)) $tooltip .= '<br><b>' . $langs->trans('Title') . ':</b> ' . $label; + if (! empty($labeltype)) + $tooltip .= '<br><b>' . $langs->trans('Type') . ':</b> ' . $labeltype; if (! empty($this->location)) $tooltip .= '<br><b>' . $langs->trans('Location') . ':</b> ' . $this->location; @@ -1129,11 +1140,11 @@ class ActionComm extends CommonObject if (! empty($conf->global->AGENDA_USE_EVENT_TYPE) && $this->type_color) $linkclose = ' style="background-color:#'.$this->type_color.'"'; - if (empty($notooltip) && $user->rights->propal->lire) + if (empty($notooltip)) { if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label=$langs->trans("ShowSupplierProposal"); + $label=$langs->trans("ShowAction"); $linkclose.=' alt="'.dol_escape_htmltag($tooltip, 1).'"'; } $linkclose.=' title="'.dol_escape_htmltag($tooltip, 1).'"'; @@ -1166,13 +1177,13 @@ class ActionComm extends CommonObject if ($withpicto == 2) { $libelle=$label; - if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) $libelle=$langs->transnoentities("Action".$this->type_code); + if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) $libelle=$labeltype; $libelleshort=''; } else { $libelle=(empty($this->libelle)?$label:$this->libelle.(($label && $label != $this->libelle)?' '.$label:'')); - if (! empty($conf->global->AGENDA_USE_EVENT_TYPE) && empty($libelle)) $libelle=($langs->transnoentities("Action".$this->type_code) != "Action".$this->type_code)?$langs->transnoentities("Action".$this->type_code):$this->type_label; + if (! empty($conf->global->AGENDA_USE_EVENT_TYPE) && empty($libelle)) $libelle=$labeltype; if ($maxlength < 0) $libelleshort=$this->ref; else $libelleshort=dol_trunc($libelle,$maxlength); } diff --git a/htdocs/comm/action/class/cactioncomm.class.php b/htdocs/comm/action/class/cactioncomm.class.php index 237a1043ac61e9198725ddeb5e35a04bdde0cab0..c03763c13a6b2f8155837e6ea31fd9ffb29ba5f0 100644 --- a/htdocs/comm/action/class/cactioncomm.class.php +++ b/htdocs/comm/action/class/cactioncomm.class.php @@ -105,9 +105,9 @@ class CActionComm * @param string|int $active 1 or 0 to filter on event state active or not ('' by default = no filter) * @param string $idorcode 'id' or 'code' * @param string $excludetype Type to exclude ('system' or 'systemauto') - * @param int $onlyautoornot 1=Group all type AC_XXX into 1 line AC_MANUAL. 0=Keep details of type + * @param int $onlyautoornot 1=Group all type AC_XXX into 1 line AC_MANUAL. 0=Keep details of type, -1=Keep details and add a combined line "All manual" * @param string $morefilter Add more SQL filter - * @return mixed Array of all event types if OK, <0 if KO + * @return mixed Array of all event types if OK, <0 if KO. Key of array is id or code depending on parameter $idorcode. */ function liste_array($active='',$idorcode='id',$excludetype='',$onlyautoornot=0, $morefilter='') { @@ -123,7 +123,7 @@ class CActionComm if ($active != '') $sql.=" AND active=".$active; if (! empty($excludetype)) $sql.=" AND type <> '".$excludetype."'"; if ($morefilter) $sql.=" AND ".$morefilter; - $sql.= " ORDER BY module, position"; + $sql.= " ORDER BY module, position, type"; dol_syslog(get_class($this)."::liste_array", LOG_DEBUG); $resql=$this->db->query($sql); @@ -140,7 +140,7 @@ class CActionComm $qualified=1; // $obj->type can be system, systemauto, module, moduleauto, xxx, xxxauto - if ($qualified && $onlyautoornot && preg_match('/^system/',$obj->type) && ! preg_match('/^AC_OTH/',$obj->code)) $qualified=0; // We discard detailed system events. We keep only the 2 generic lines (AC_OTH and AC_OTH_AUTO) + if ($qualified && $onlyautoornot > 0 && preg_match('/^system/',$obj->type) && ! preg_match('/^AC_OTH/',$obj->code)) $qualified=0; // We discard detailed system events. We keep only the 2 generic lines (AC_OTH and AC_OTH_AUTO) if ($qualified && $obj->module) { @@ -155,12 +155,19 @@ class CActionComm if ($qualified) { $code=$obj->code; - if ($onlyautoornot && $code == 'AC_OTH') $code='AC_MANUAL'; - if ($onlyautoornot && $code == 'AC_OTH_AUTO') $code='AC_AUTO'; + if ($onlyautoornot > 0 && $code == 'AC_OTH') $code='AC_MANUAL'; + if ($onlyautoornot > 0 && $code == 'AC_OTH_AUTO') $code='AC_AUTO'; $transcode=$langs->trans("Action".$code); - $repid[$obj->id] = ($transcode!="Action".$code?$transcode:$langs->trans($obj->label)); - $repcode[$obj->code] = ($transcode!="Action".$code?$transcode:$langs->trans($obj->label)); - if ($onlyautoornot && preg_match('/^module/',$obj->type) && $obj->module) $repcode[$obj->code].=' ('.$langs->trans("Module").': '.$obj->module.')'; + $label = ($transcode!="Action".$code?$transcode:$langs->trans($obj->label)); + if ($onlyautoornot == -1 && ! empty($conf->global->AGENDA_USE_EVENT_TYPE) && ! preg_match('/auto/i', $code)) + { + $label=' '.$label; + $repid[-99]=$langs->trans("ActionAC_MANUAL"); + $repcode['AC_NON_AUTO']=$langs->trans("ActionAC_MANUAL"); + } + $repid[$obj->id] = $label; + $repcode[$obj->code] = $label; + if ($onlyautoornot > 0 && preg_match('/^module/',$obj->type) && $obj->module) $repcode[$obj->code].=' ('.$langs->trans("Module").': '.$obj->module.')'; } $i++; } diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index f70b8d171a1f9d1d4650033fcc97dfded28d3931..f63bbd7ab79dd60de7d65f47ba5d1d22b0384c40 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -450,7 +450,29 @@ if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resour if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element"; $sql.= ' WHERE a.fk_action = ca.id'; $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')'; -if ($actioncode) $sql.=" AND ca.code IN ('".implode("','", explode(',',$actioncode))."')"; +// Condition on actioncode +if (! empty($actioncode)) +{ + if (empty($conf->global->AGENDA_USE_EVENT_TYPE)) + { + if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'"; + elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'"; + else + { + if ($actioncode == 'AC_OTH') $sql.= " AND ca.type != 'systemauto'"; + if ($actioncode == 'AC_OTH_AUTO') $sql.= " AND ca.type = 'systemauto'"; + } + } + else + { + if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'"; + elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'"; + else + { + $sql.=" AND ca.code IN ('".implode("','", explode(',',$actioncode))."')"; + } + } +} if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid); if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid); if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")"; @@ -970,7 +992,15 @@ if (empty($action) || $action == 'show_month') // View by month $i=0; while ($i < 7) { - echo ' <td align="center">'.$langs->trans("Day".(($i+(isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1)) % 7))."</td>\n"; + print ' <td align="center">'; + $numdayinweek=(($i+(isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1)) % 7); + if (! empty($conf->dol_optimize_smallscreen)) + { + $labelshort=array(0=>'SundayMin',1=>'MondayMin',2=>'TuesdayMin',3=>'WednesdayMin',4=>'ThursdayMin',5=>'FridayMin',6=>'SaturdayMin'); + print $langs->trans($labelshort[$numdayinweek]); + } + else print $langs->trans("Day".$numdayinweek); + print "</td>\n"; $i++; } echo " </tr>\n"; diff --git a/htdocs/comm/action/listactions.php b/htdocs/comm/action/listactions.php index ec4fba1298082a4687a83d4d369df75146d9d212..d583d56074ed18371ea316cc7156b3ae2ecc3b3f 100644 --- a/htdocs/comm/action/listactions.php +++ b/htdocs/comm/action/listactions.php @@ -194,7 +194,29 @@ if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resour if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element"; $sql.= " WHERE c.id = a.fk_action"; $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')'; -if ($actioncode) $sql.=" AND c.code IN ('".$db->escape($actioncode)."')"; +// Condition on actioncode +if (! empty($actioncode)) +{ + if (empty($conf->global->AGENDA_USE_EVENT_TYPE)) + { + if ($actioncode == 'AC_NON_AUTO') $sql.= " AND c.type != 'systemauto'"; + elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND c.type = 'systemauto'"; + else + { + if ($actioncode == 'AC_OTH') $sql.= " AND c.type != 'systemauto'"; + if ($actioncode == 'AC_OTH_AUTO') $sql.= " AND c.type = 'systemauto'"; + } + } + else + { + if ($actioncode == 'AC_NON_AUTO') $sql.= " AND c.type != 'systemauto'"; + elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND c.type = 'systemauto'"; + else + { + $sql.=" AND c.code IN ('".implode("','", explode(',',$actioncode))."')"; + } + } +} if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid); if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid); if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")"; @@ -402,6 +424,7 @@ if ($resql) { if ($actionstatic->type_picto) print img_picto('', $actionstatic->type_picto); else { + if ($actionstatic->type_code == 'AC_RDV') print img_picto('', 'object_group').' '; if ($actionstatic->type_code == 'AC_TEL') print img_picto('', 'object_phoning').' '; if ($actionstatic->type_code == 'AC_FAX') print img_picto('', 'object_phoning_fax').' '; if ($actionstatic->type_code == 'AC_EMAIL') print img_picto('', 'object_email').' '; diff --git a/htdocs/comm/action/pertype.php b/htdocs/comm/action/pertype.php index ae11f06cedd7937961b0e70285a83c12c44c12c4..2dd5d78d9b9db59cb10b66893a2356856f83fe5b 100644 --- a/htdocs/comm/action/pertype.php +++ b/htdocs/comm/action/pertype.php @@ -365,7 +365,29 @@ if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resour if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element"; $sql.= ' WHERE a.fk_action = ca.id'; $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')'; -if ($actioncode) $sql.=" AND ca.code='".$db->escape($actioncode)."'"; +// Condition on actioncode +if (! empty($actioncode)) +{ + if (empty($conf->global->AGENDA_USE_EVENT_TYPE)) + { + if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'"; + elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'"; + else + { + if ($actioncode == 'AC_OTH') $sql.= " AND ca.type != 'systemauto'"; + if ($actioncode == 'AC_OTH_AUTO') $sql.= " AND ca.type = 'systemauto'"; + } + } + else + { + if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'"; + elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'"; + else + { + $sql.=" AND ca.code IN ('".implode("','", explode(',',$actioncode))."')"; + } + } +} if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid); if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid); if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")"; diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index cd5f7d10fa7c2be5474912a8e4190415c33cb399..5651bca338b37fbf42bed2961d8634afa674ed15 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -96,7 +96,6 @@ else $actioncode=GETPOST("actioncode","alpha",3)?GETPOST("actioncode","alpha",3):(GETPOST("actioncode")=='0'?'0':(empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE)?'':$conf->global->AGENDA_DEFAULT_FILTER_TYPE)); } if ($actioncode == '' && empty($actioncodearray)) $actioncode=(empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE)?'':$conf->global->AGENDA_DEFAULT_FILTER_TYPE); - $dateselect=dol_mktime(0, 0, 0, GETPOST('dateselectmonth'), GETPOST('dateselectday'), GETPOST('dateselectyear')); if ($dateselect > 0) { @@ -373,7 +372,29 @@ if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resour if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element"; $sql.= ' WHERE a.fk_action = ca.id'; $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')'; -if ($actioncode) $sql.=" AND ca.code='".$db->escape($actioncode)."'"; +// Condition on actioncode +if (! empty($actioncode)) +{ + if (empty($conf->global->AGENDA_USE_EVENT_TYPE)) + { + if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'"; + elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'"; + else + { + if ($actioncode == 'AC_OTH') $sql.= " AND ca.type != 'systemauto'"; + if ($actioncode == 'AC_OTH_AUTO') $sql.= " AND ca.type = 'systemauto'"; + } + } + else + { + if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'"; + elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'"; + else + { + $sql.=" AND ca.code IN ('".implode("','", explode(',',$actioncode))."')"; + } + } +} if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid); if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid); if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")"; diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php index 92dc2726030b20a163964cc5f57131b6cbbc85c0..d7fd92f365b5773745a7c0267ada212651a0deaf 100644 --- a/htdocs/comm/mailing/card.php +++ b/htdocs/comm/mailing/card.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2005-2012 Laurent Destailleur <eldy@uers.sourceforge.net> + * Copyright (C) 2005-2016 Laurent Destailleur <eldy@uers.sourceforge.net> * Copyright (C) 2005-2016 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify @@ -333,7 +333,7 @@ if (empty($reshook)) dol_syslog("comm/mailing/card.php: error for #".$i.($mail->error?' - '.$mail->error:''), LOG_WARNING); $sql="UPDATE ".MAIN_DB_PREFIX."mailing_cibles"; - $sql.=" SET statut=-1, date_envoi='".$db->idate($now)."' WHERE rowid=".$obj->rowid; + $sql.=" SET statut=-1, error_text='".$db->escape($mail->error)."', date_envoi='".$db->idate($now)."' WHERE rowid=".$obj->rowid; $resql2=$db->query($sql); if (! $resql2) { @@ -668,7 +668,15 @@ if ($action == 'create') print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="action" value="add">'; - print load_fiche_titre($langs->trans("NewMailing")); + $htmltext = '<i>'.$langs->trans("FollowingConstantsWillBeSubstituted").':<br>'; + foreach($object->substitutionarray as $key => $val) + { + $htmltext.=$key.' = '.$langs->trans($val).'<br>'; + } + $htmltext.='</i>'; + + // Print mail form + print load_fiche_titre($langs->trans("NewMailing"), $form->textwithpicto($langs->trans("AvailableVariables"), $htmltext), 'title_generic'); dol_fiche_head(); @@ -693,21 +701,16 @@ if ($action == 'create') print '<tr><td>'.$langs->trans("BackgroundColorByDefault").'</td><td colspan="3">'; print $htmlother->selectColor($_POST['bgcolor'],'bgcolor','new_mailing',0); print '</td></tr>'; - print '<tr><td valign="top"><span class="fieldrequired">'.$langs->trans("MailMessage").'</span><br>'; - print '<br><i>'.$langs->trans("CommonSubstitutions").':<br>'; - foreach($object->substitutionarray as $key => $val) - { - print $key.' = '.$langs->trans($val).'<br>'; - } - print '</i></td>'; - print '<td>'; + + print '</table>'; + + print '<div style="padding-top: 10px">'; // Editeur wysiwyg require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor=new DolEditor('body',$_POST['body'],'',320,'dolibarr_mailings','',true,true,$conf->global->FCKEDITOR_ENABLE_MAILING,20,'90%'); $doleditor->Create(); - print '</td></tr>'; - print '</table>'; - + print '</div>'; + dol_fiche_end(); print '<div class="center"><input type="submit" class="button" value="'.$langs->trans("CreateMailing").'"></div>'; @@ -788,17 +791,24 @@ else } } - print '<table class="border" width="100%">'; - $linkback = '<a href="'.DOL_URL_ROOT.'/comm/mailing/list.php">'.$langs->trans("BackToList").'</a>'; - print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td>'; + $morehtmlright=''; + if ($object->statut == 2) $morehtmlright.=' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.') '; + + dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', '', '', 0, '', $morehtmlright); + + print '<div class="underbanner clearboth"></div>'; + + print '<table class="border" width="100%">'; + +/* print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td>'; print '<td colspan="3">'; print $form->showrefnav($object,'id', $linkback); print '</td></tr>'; - +*/ // Description - print '<tr><td>'.$form->editfieldkey("MailTitle",'titre',$object->titre,$object,$user->rights->mailing->creer && $object->statut < 3,'string').'</td><td colspan="3">'; + print '<tr><td class="titlefield">'.$form->editfieldkey("MailTitle",'titre',$object->titre,$object,$user->rights->mailing->creer && $object->statut < 3,'string').'</td><td colspan="3">'; print $form->editfieldval("MailTitle",'titre',$object->titre,$object,$user->rights->mailing->creer && $object->statut < 3,'string'); print '</td></tr>'; @@ -813,10 +823,12 @@ else print '</td></tr>'; // Status + /* print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'.$object->getLibStatut(4); if ($object->statut == 2) print ' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.')'; print'</td></tr>'; - + */ + // Nb of distinct emails print '<tr><td>'; print $langs->trans("TotalNbOfDistinctRecipients"); @@ -987,11 +999,19 @@ else print '<br>'; } - // Print mail content - print load_fiche_titre($langs->trans("EMail"),'',''); + $htmltext = '<i>'.$langs->trans("FollowingConstantsWillBeSubstituted").':<br>'; + foreach($object->substitutionarray as $key => $val) + { + $htmltext.=$key.' = '.$langs->trans($val).'<br>'; + } + $htmltext.='</i>'; + + // Print mail content + print load_fiche_titre($langs->trans("EMail"), $form->textwithpicto($langs->trans("AvailableVariables"), $htmltext), 'title_generic'); + dol_fiche_head(''); - + print '<table class="border" width="100%">'; // Subject @@ -1019,16 +1039,11 @@ else /*print '<tr><td width="15%">'.$langs->trans("BackgroundColorByDefault").'</td><td colspan="3">'; print $htmlother->selectColor($object->bgcolor,'bgcolor','edit_mailing',0); print '</td></tr>';*/ - + + print '</table>'; + // Message - print '<tr><td valign="top">'.$langs->trans("MailMessage").'<br>'; - print '<br><i>'.$langs->trans("CommonSubstitutions").':<br>'; - foreach($object->substitutionarray as $key => $val) - { - print $key.' = '.$langs->trans($val).'<br>'; - } - print '</i></td>'; - print '<td colspan="3" bgcolor="'.($object->bgcolor?(preg_match('/^#/',$object->bgcolor)?'':'#').$object->bgcolor:'white').'">'; + print '<div style="padding-top: 10px" bgcolor="'.($object->bgcolor?(preg_match('/^#/',$object->bgcolor)?'':'#').$object->bgcolor:'white').'">'; if (empty($object->bgcolor) || strtolower($object->bgcolor) == 'ffffff') { $readonly=1; @@ -1038,12 +1053,10 @@ else $doleditor->Create(); } else print dol_htmlentitiesbr($object->body); - print '</td>'; - print '</tr>'; - - print '</table>'; + print '</div>'; dol_fiche_end(); + } else { @@ -1051,19 +1064,28 @@ else * Mailing en mode edition */ - print '<table class="border" width="100%">'; - $linkback = '<a href="'.DOL_URL_ROOT.'/comm/mailing/list.php">'.$langs->trans("BackToList").'</a>'; + $morehtmlright=''; + if ($object->statut == 2) $morehtmlright.=' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.') '; + + dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', '', '', 0, '', $morehtmlright); + + print '<div class="underbanner clearboth"></div>'; + + print '<table class="border" width="100%">'; + + /* print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td>'; print '<td colspan="3">'; print $form->showrefnav($object,'id', $linkback); print '</td></tr>'; - + */ + // Topic - print '<tr><td>'.$langs->trans("MailTitle").'</td><td colspan="3">'.$object->titre.'</td></tr>'; + print '<tr><td class="titlefield">'.$langs->trans("MailTitle").'</td><td colspan="3">'.$object->titre.'</td></tr>'; // From - print '<tr><td>'.$langs->trans("MailFrom").'</td><td colspan="3">'.dol_print_email($object->email_from,0,0,0,0,1).'</td></tr>'; + print '<tr><td class="titlefield">'.$langs->trans("MailFrom").'</td><td colspan="3">'.dol_print_email($object->email_from,0,0,0,0,1).'</td></tr>'; // To print '<tr><td>'.$langs->trans("MailErrorsTo").'</td><td colspan="3">'.dol_print_email($object->email_errorsto,0,0,0,0,1).'</td></tr>'; @@ -1100,21 +1122,29 @@ else - print "\n"; + print "<br>\n"; + print '<form name="edit_mailing" action="card.php" method="post" enctype="multipart/form-data">'."\n"; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="action" value="update">'; print '<input type="hidden" name="id" value="'.$object->id.'">'; - + + $htmltext = '<i>'.$langs->trans("FollowingConstantsWillBeSubstituted").':<br>'; + foreach($object->substitutionarray as $key => $val) + { + $htmltext.=$key.' = '.$langs->trans($val).'<br>'; + } + $htmltext.='</i>'; + // Print mail content - print load_fiche_titre($langs->trans("EMail"),'',''); + print load_fiche_titre($langs->trans("EMail"), $form->textwithpicto($langs->trans("AvailableVariables"), $htmltext), 'title_generic'); dol_fiche_head(); - + print '<table class="border" width="100%">'; // Subject - print '<tr><td class="fieldrequired titlefield">'.$langs->trans("MailTopic").'</td><td colspan="3"><input class="flat" type="text" size=60 name="sujet" value="'.$object->sujet.'"></td></tr>'; + print '<tr><td class="fieldrequired titlefield">'.$langs->trans("MailTopic").'</td><td colspan="3"><input class="flat quatrevingtpercent" type="text" name="sujet" value="'.$object->sujet.'"></td></tr>'; $trackid=''; // TODO To avoid conflicts with 2 mass emailing, we should set a trackid here, even if we use another one into email header. dol_init_file_process($upload_dir, $trackid); @@ -1159,23 +1189,17 @@ else print '<tr><td>'.$langs->trans("BackgroundColorByDefault").'</td><td colspan="3">'; print $htmlother->selectColor($object->bgcolor,'bgcolor','edit_mailing',0); print '</td></tr>'; - + + print '</table>'; + // Message - print '<tr><td valign="top">'.$langs->trans("MailMessage").'<br>'; - print '<br><i>'.$langs->trans("CommonSubstitutions").':<br>'; - foreach($object->substitutionarray as $key => $val) - { - print $key.' = '.$langs->trans($val).'<br>'; - } - print '</i></td>'; - print '<td colspan="3">'; + print '<div style="padding-top: 10px">'; // Editeur wysiwyg require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor=new DolEditor('body',$object->body,'',320,'dolibarr_mailings','',true,true,$conf->global->FCKEDITOR_ENABLE_MAILING,20,120); $doleditor->Create(); - print '</td></tr>'; + print '</div>'; - print '</table>'; dol_fiche_end(); diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index cc5b16f1935fc160c8f54b63f7593ab01ff77fcd..3767ba17add4fabb5b4311ae642425af212498df 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -38,16 +38,17 @@ $langs->load("mails"); if (! $user->rights->mailing->lire || $user->societe_id > 0) accessforbidden(); +// Load variable for pagination $limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit; -$sortfield = GETPOST("sortfield",'alpha'); -$sortorder = GETPOST("sortorder",'alpha'); -$page = GETPOST("page",'int'); +$sortfield = GETPOST('sortfield','alpha'); +$sortorder = GETPOST('sortorder','alpha'); +$page = GETPOST('page','int'); if ($page == -1) { $page = 0; } $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -if (! $sortorder) $sortorder="ASC"; if (! $sortfield) $sortfield="email"; +if (! $sortorder) $sortorder="ASC"; $id=GETPOST('id','int'); $rowid=GETPOST('rowid','int'); @@ -178,17 +179,24 @@ if ($object->fetch($id) >= 0) dol_fiche_head($head, 'targets', $langs->trans("Mailing"), 0, 'email'); - - print '<table class="border" width="100%">'; - $linkback = '<a href="'.DOL_URL_ROOT.'/comm/mailing/list.php">'.$langs->trans("BackToList").'</a>'; + $morehtmlright=''; + if ($object->statut == 2) $morehtmlright.=' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.') '; + + dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', '', '', 0, '', $morehtmlright); + + + print '<div class="underbanner clearboth"></div>'; + + print '<table class="border" width="100%">'; +/* print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td>'; print '<td colspan="3">'; print $form->showrefnav($object,'id', $linkback); print '</td></tr>'; - - print '<tr><td>'.$langs->trans("MailTitle").'</td><td colspan="3">'.$object->titre.'</td></tr>'; +*/ + print '<tr><td class="titlefield">'.$langs->trans("MailTitle").'</td><td colspan="3">'.$object->titre.'</td></tr>'; print '<tr><td>'.$langs->trans("MailFrom").'</td><td colspan="3">'.dol_print_email($object->email_from,0,0,0,0,1).'</td></tr>'; @@ -197,10 +205,10 @@ if ($object->fetch($id) >= 0) print '</td></tr>'; // Status - print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'.$object->getLibStatut(4); +/* print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'.$object->getLibStatut(4); if ($object->statut == 2) print ' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.')'; print '</td></tr>'; - +*/ // Nb of distinct emails print '<tr><td>'; print $langs->trans("TotalNbOfDistinctRecipients"); @@ -363,7 +371,7 @@ if ($object->fetch($id) >= 0) } // List of selected targets - $sql = "SELECT mc.rowid, mc.lastname, mc.firstname, mc.email, mc.other, mc.statut, mc.date_envoi, mc.source_url, mc.source_id, mc.source_type"; + $sql = "SELECT mc.rowid, mc.lastname, mc.firstname, mc.email, mc.other, mc.statut, mc.date_envoi, mc.source_url, mc.source_id, mc.source_type, mc.error_text"; $sql .= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc"; $sql .= " WHERE mc.fk_mailing=".$object->id; if ($search_lastname) $sql.= " AND mc.lastname LIKE '%".$db->escape($search_lastname)."%'"; @@ -441,15 +449,15 @@ if ($object->fetch($id) >= 0) print '<tr class="liste_titre">'; // EMail print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_email" size="14" value="'.$search_email.'">'; + print '<input class="flat maxwidth100" type="text" name="search_email" value="'.dol_escape_htmltag($search_email).'">'; print '</td>'; // Name print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_lastname" size="12" value="'.$search_lastname.'">'; + print '<input class="flat maxwidth100" type="text" name="search_lastname" value="'.dol_escape_htmltag($search_lastname).'">'; print '</td>'; // Firstname print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_firstname" size="10" value="'.$search_firstname.'">'; + print '<input class="flat maxwidth100" type="text" name="search_firstname" value="'.dol_escape_htmltag($search_firstname).'">'; print '</td>'; // Other print '<td class="liste_titre">'; @@ -468,10 +476,10 @@ if ($object->fetch($id) >= 0) print '<td class="liste_titre" align="right">'; print $formmailing->selectDestinariesStatus($search_dest_status,'search_dest_status',1); print '</td>'; - //Search Icon + // Action column print '<td class="liste_titre" align="right">'; - print '<input type="image" class="liste_titre" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" name="button_search" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; - print '<input type="image" class="liste_titre" src="'.img_picto($langs->trans("Reset"),'searchclear.png','','',1).'" name="button_removefilter" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; + $searchpitco=$form->showFilterAndCheckAddButtons($massactionbutton?1:0, 'checkforselect', 1); + print $searchpitco; print '</td>'; print '</tr>'; @@ -480,9 +488,10 @@ if ($object->fetch($id) >= 0) if ($num) { - while ($i < min($num,$conf->liste_limit)) + while ($i < min($num,$limit)) { $obj = $db->fetch_object($resql); + $var=!$var; print "<tr ".$bc[$var].">"; @@ -537,7 +546,7 @@ if ($object->fetch($id) >= 0) { print '<td align="center">'.$obj->date_envoi.'</td>'; print '<td align="right" class="nowrap">'; - print $object::libStatutDest($obj->statut,2); + print $object::libStatutDest($obj->statut,2,$obj->error_text); print '</td>'; } diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php index 6a7ae2cefbe206e21f0555db67c26971966aecfd..dc39c2e9399be21252f67e56333c9e0042cd4eee 100644 --- a/htdocs/comm/mailing/class/mailing.class.php +++ b/htdocs/comm/mailing/class/mailing.class.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2005-2016 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify @@ -33,7 +33,8 @@ class Mailing extends CommonObject { public $element='mailing'; public $table_element='mailing'; - + public $picto='email'; + var $titre; var $sujet; var $body; @@ -577,12 +578,14 @@ class Mailing extends CommonObject /** * Renvoi le libelle d'un statut donne + * TODO Add class mailin_target.class.php * * @param int $statut Id statut * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto + * @param strin $desc Desc error * @return string Label */ - static public function libStatutDest($statut,$mode=0) + static public function libStatutDest($statut,$mode=0,$desc='') { global $langs; $langs->load('mails'); @@ -597,28 +600,28 @@ class Mailing extends CommonObject } if ($mode == 2) { - if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error(); + if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error($desc); if ($statut==1) return $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut4'); if ($statut==2) return $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6'); if ($statut==3) return $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8'); } if ($mode == 3) { - if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error(); + if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error($desc); if ($statut==1) return $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut4'); if ($statut==2) return $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6'); if ($statut==3) return $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8'); } if ($mode == 4) { - if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error(); + if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error($desc); if ($statut==1) return $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut4'); if ($statut==2) return $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6'); if ($statut==3) return $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8'); } if ($mode == 5) { - if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error(); + if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error($desc); if ($statut==1) return $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut4'); if ($statut==2) return $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6'); if ($statut==3) return $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8'); diff --git a/htdocs/comm/mailing/index.php b/htdocs/comm/mailing/index.php index bf7c4624c1e08b789cccb5c46be26cf353566c07..ba8c2481411a0b999453174f0e0decf643d9d5bb 100644 --- a/htdocs/comm/mailing/index.php +++ b/htdocs/comm/mailing/index.php @@ -56,10 +56,10 @@ print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<table class="noborder nohover" width="100%">'; print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("SearchAMailing").'</td></tr>'; print '<tr '.$bc[$var].'><td class="nowrap">'; -print $langs->trans("Ref").':</td><td><input type="text" class="flat" name="sref" size="18"></td>'; +print $langs->trans("Ref").':</td><td><input type="text" class="flat inputsearch" name="sref"></td>'; print '<td rowspan="2"><input type="submit" value="'.$langs->trans("Search").'" class="button"></td></tr>'; print '<tr '.$bc[$var].'><td class="nowrap">'; -print $langs->trans("Other").':</td><td><input type="text" class="flat" name="sall" size="18"></td>'; +print $langs->trans("Other").':</td><td><input type="text" class="flat inputsearch" name="sall"></td>'; print "</table></form><br>\n"; diff --git a/htdocs/comm/mailing/info.php b/htdocs/comm/mailing/info.php index 77245f74766c05b701224d5e689b2f548b199440..5280fcfad59d21c183eae2cf107cc3a646c89b90 100644 --- a/htdocs/comm/mailing/info.php +++ b/htdocs/comm/mailing/info.php @@ -43,24 +43,33 @@ llxHeader('',$langs->trans("Mailing"),'EN:Module_EMailing|FR:Module_Mailing|ES:M $form = new Form($db); -$mil = new Mailing($db); +$object = new Mailing($db); -if ($mil->fetch($_REQUEST["id"]) >= 0) +if ($object->fetch($_REQUEST["id"]) >= 0) { - $head = emailing_prepare_head($mil); + $head = emailing_prepare_head($object); dol_fiche_head($head, 'info', $langs->trans("Mailing"), 0, 'email'); - - print '<table width="100%"><tr><td>'; - $mil->user_creation=$mil->user_creat; - $mil->date_creation=$mil->date_creat; - $mil->user_validation=$mil->user_valid; - $mil->date_validation=$mil->date_valid; - dol_print_object_info($mil); - print '</td></tr></table>'; - - print '</div>'; + $linkback = '<a href="'.DOL_URL_ROOT.'/comm/mailing/list.php">'.$langs->trans("BackToList").'</a>'; + + $morehtmlright=''; + if ($object->statut == 2) $morehtmlright.=' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.') '; + + dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', '', '', 0, '', $morehtmlright); + + print '<div class="underbanner clearboth"></div><br>'; + + //print '<table width="100%"><tr><td>'; + $object->user_creation=$object->user_creat; + $object->date_creation=$object->date_creat; + $object->user_validation=$object->user_valid; + $object->date_validation=$object->date_valid; + dol_print_object_info($object, 0); + //print '</td></tr></table>'; + + + dol_fiche_end(); } llxFooter(); diff --git a/htdocs/comm/mailing/list.php b/htdocs/comm/mailing/list.php index 7542782f6e7c419ab519921509988da068258a80..bd94dd83f5c77c5bd4e9904c7ca35f32e41a1be0 100644 --- a/htdocs/comm/mailing/list.php +++ b/htdocs/comm/mailing/list.php @@ -1,5 +1,5 @@ <?php -/* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2005-2016 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify @@ -125,11 +125,11 @@ if ($result) print '<tr class="liste_titre">'; print '<td class="liste_titre">'; - print '<input type="text" class="flat" name="sref" value="'.dol_escape_htmltag($sref).'" size="6">'; + print '<input type="text" class="flat maxwidth50" name="sref" value="'.dol_escape_htmltag($sref).'">'; print '</td>'; // Title print '<td class="liste_titre">'; - print '<input type="text" class="flat" name="sall" value="'.dol_escape_htmltag($sall).'" size="40">'; + print '<input type="text" class="flat maxwidth100 maxwidth50onsmartphone" name="sall" value="'.dol_escape_htmltag($sall).'">'; print '</td>'; print '<td class="liste_titre"> </td>'; if (! $filteremail) print '<td class="liste_titre"> </td>'; @@ -145,7 +145,7 @@ if ($result) $email=new Mailing($db); - while ($i < min($num,$conf->liste_limit)) + while ($i < min($num,$limit)) { $obj = $db->fetch_object($result); diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index 6b47d5205b604e776ff9c31314d4b82558c6fd3c..1fe8f76efaac9f31608c800821dd23700c8a7ea8 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -777,7 +777,7 @@ if (empty($reshook)) $pu_ht = price($prodcustprice->lines [0]->price); $pu_ttc = price($prodcustprice->lines [0]->price_ttc); $price_base_type = $prodcustprice->lines [0]->price_base_type; - $prod->tva_tx = $prodcustprice->lines [0]->tva_tx; + $tva_tx = $prodcustprice->lines [0]->tva_tx; } } } @@ -1808,7 +1808,7 @@ if ($action == 'create') // Remise dispo de type non avoir $filter = 'fk_facture_source IS NULL'; print '<br>'; - $form->form_remise_dispo($_SERVER["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filter); + $form->form_remise_dispo($_SERVER["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filter, 0, '', 1); } } if ($absolute_creditnote) { diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php index aa5a865dbf26e3f607c78e341c98c12721cad5c3..04c1af11e1d73379c8cacebbd14e5806eacb1396 100644 --- a/htdocs/comm/propal/stats/index.php +++ b/htdocs/comm/propal/stats/index.php @@ -37,7 +37,7 @@ $mode=GETPOST("mode")?GETPOST("mode"):'customer'; if ($mode == 'customer' && ! $user->rights->propale->lire) accessforbidden(); if ($mode == 'supplier' && ! $user->rights->supplier_proposal->lire) accessforbidden(); -$object_statut=GETPOST('propal_statut'); +$object_status=GETPOST('object_status'); $userid=GETPOST('userid','int'); $socid=GETPOST('socid','int'); @@ -58,6 +58,7 @@ $langs->load('orders'); $langs->load('companies'); $langs->load('other'); $langs->load('suppliers'); +$langs->load('supplier_proposal'); /* @@ -91,7 +92,7 @@ dol_mkdir($dir); $stats = new PropaleStats($db, $socid, ($userid>0?$userid:0), $mode); -if ($object_statut != '' && $object_statut >= 0) $stats->where .= ' AND p.fk_statut IN ('.$object_statut.')'; +if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND p.fk_statut IN ('.$object_status.')'; // Build graphic number of object $data = $stats->getNbByMonthWithPrevYear($endyear,$startyear); @@ -265,7 +266,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; print '</td></tr>'; // Status print '<tr><td align="left">'.$langs->trans("Status").'</td><td align="left">'; - $formpropal->selectProposalStatus($object_statut,0,1,1,$mode); + $formpropal->selectProposalStatus(($object_status!=''?$object_status:-1),0,0,1,$mode,'object_status'); print '</td></tr>'; // Year print '<tr><td align="left">'.$langs->trans("Year").'</td><td align="left">'; diff --git a/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php b/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php index cc84e87ddbae564ddf3a9665db2399ce304648e0..dd325da7297007a85fa5ac210b47fba13f9e4d83 100644 --- a/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php +++ b/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php @@ -35,27 +35,44 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("propal"); +$total=0; $ilink=0; $var=true; -$total=0; foreach($linkedObjectBlock as $key => $objectlink) { - $var=!$var; + $ilink++; + $var=!$var; + $trclass=($var?'pair':'impair'); + if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; ?> -<tr <?php echo $bc[$var]; ?> > - <td><?php echo $langs->trans("Proposal"); ?></td> - <td><?php echo $objectlink->getNomUrl(1); ?></td> - <td><?php echo $objectlink->ref_client; ?></td> - <td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td> - <td align="right"><?php - if ($user->rights->propale->lire) { - $total = $total + $objectlink->total_ht; - echo price($objectlink->total_ht); - } ?></td> - <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> - <td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> -</tr> + <tr class="<?php echo $trclass; ?>"> + <td><?php echo $langs->trans("Proposal"); ?></td> + <td><?php echo $objectlink->getNomUrl(1); ?></td> + <td><?php echo $objectlink->ref_client; ?></td> + <td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td> + <td align="right"><?php + if ($user->rights->propale->lire) { + $total = $total + $objectlink->total_ht; + echo price($objectlink->total_ht); + } ?></td> + <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> + <td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> + </tr> <?php } +if (count($linkedObjectBlock) > 1) +{ + ?> + <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>"> + <td><?php echo $langs->trans("Total"); ?></td> + <td></td> + <td align="center"></td> + <td align="center"></td> + <td align="right"><?php echo price($total); ?></td> + <td align="right"></td> + <td align="right"></td> + </tr> + <?php +} ?> <!-- END PHP TEMPLATE --> diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 313fef16e2cd2d881d527e5ce0b45784a367b1e4..9495895bedac3579ec8b42ed2dc0c78e4a983840 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -730,7 +730,7 @@ if (empty($reshook)) $pu_ht = price($prodcustprice->lines [0]->price); $pu_ttc = price($prodcustprice->lines [0]->price_ttc); $price_base_type = $prodcustprice->lines [0]->price_base_type; - $prod->tva_tx = $prodcustprice->lines [0]->tva_tx; + $tva_tx = $prodcustprice->lines [0]->tva_tx; } } else @@ -2019,7 +2019,7 @@ if ($action == 'create' && $user->rights->commande->creer) } else { // Remise dispo de type remise fixe (not credit note) print '<br>'; - $form->form_remise_dispo($_SERVER["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filterabsolutediscount); + $form->form_remise_dispo($_SERVER["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filterabsolutediscount, 0, '', 1); } } if ($absolute_creditnote) { diff --git a/htdocs/commande/class/api_orders.class.php b/htdocs/commande/class/api_orders.class.php index f000e4ce201a5d83f9806be2c0092a90c5cce05f..c9931ac6f2a86918d4bd5636c9a60b0a13d32e33 100644 --- a/htdocs/commande/class/api_orders.class.php +++ b/htdocs/commande/class/api_orders.class.php @@ -371,7 +371,7 @@ class Orders extends DolibarrApi } $request_data = (object) $request_data; $updateRes = $this->commande->deleteline(DolibarrApiAccess::$user,$lineid); - if ($updateRes == 1) { + if ($updateRes > 0) { return $this->get($id); } return false; diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 14c2b88214ed71dbf93716dc02505a9794839f51..87a950623238ce3d2259de3b24adc6c0b6a02a54 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -1014,11 +1014,11 @@ if ($resql) { print '<td class="liste_titre maxwidthonsmartphone" align="right">'; $liststatus=array( - '0'=>$langs->trans("StatusOrderDraftShort"), - '1'=>$langs->trans("StatusOrderValidated"), - '2'=>$langs->trans("StatusOrderSentShort"), - '3'=>$langs->trans("StatusOrderDelivered"), - '-1'=>$langs->trans("StatusOrderCanceledShort") + Commande::STATUS_DRAFT=>$langs->trans("StatusOrderDraftShort"), + Commande::STATUS_VALIDATED=>$langs->trans("StatusOrderValidated"), + Commande::STATUS_ACCEPTED=>$langs->trans("StatusOrderSentShort"), + Commande::STATUS_CLOSED=>$langs->trans("StatusOrderDelivered"), + Commande::STATUS_CANCELED=>$langs->trans("StatusOrderCanceledShort") ); print $form->selectarray('viewstatut', $liststatus, $viewstatut, -4); print '</td>'; diff --git a/htdocs/commande/stats/index.php b/htdocs/commande/stats/index.php index 1f0f763bfd13243733b1257a0c255572f5b43898..55b82d1063c5c041d24508ec76468cf7fef6499d 100644 --- a/htdocs/commande/stats/index.php +++ b/htdocs/commande/stats/index.php @@ -28,6 +28,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; require_once DOL_DOCUMENT_ROOT.'/commande/class/commandestats.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formorder.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; $WIDTH=DolGraph::getDefaultGraphSizeForStats('width'); @@ -37,6 +38,8 @@ $mode=GETPOST("mode")?GETPOST("mode"):'customer'; if ($mode == 'customer' && ! $user->rights->commande->lire) accessforbidden(); if ($mode == 'supplier' && ! $user->rights->fournisseur->commande->lire) accessforbidden(); +$object_status=GETPOST('object_status'); + $userid=GETPOST('userid','int'); $socid=GETPOST('socid','int'); // Security check @@ -63,6 +66,7 @@ $langs->load('suppliers'); */ $form=new Form($db); +$formorder=new FormOrder($db); if ($mode == 'customer') { @@ -82,9 +86,19 @@ print load_fiche_titre($title,'','title_commercial.png'); dol_mkdir($dir); $stats = new CommandeStats($db, $socid, $mode, ($userid>0?$userid:0)); +if ($mode == 'customer') +{ + if ($object_status != '' && $object_status >= -1) $stats->where .= ' AND c.fk_statut IN ('.$object_status.')'; +} +if ($mode == 'supplier') +{ + if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND c.fk_statut IN ('.$object_status.')'; +} + // Build graphic number of object $data = $stats->getNbByMonthWithPrevYear($endyear,$startyear); + //var_dump($data); // $data = array(array('Lib',val1,val2,val3),...) @@ -261,6 +275,24 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; // User print '<tr><td align="left">'.$langs->trans("CreatedBy").'</td><td align="left">'; print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); + // Status + print '<tr><td align="left">'.$langs->trans("Status").'</td><td align="left">'; + if ($mode == 'customer') + { + $liststatus=array( + Commande::STATUS_DRAFT=>$langs->trans("StatusOrderDraft"), + Commande::STATUS_VALIDATED=>$langs->trans("StatusOrderValidated"), + Commande::STATUS_ACCEPTED=>$langs->trans("StatusOrderSent"), + Commande::STATUS_CLOSED=>$langs->trans("StatusOrderDelivered"), + Commande::STATUS_CANCELED=>$langs->trans("StatusOrderCanceled") + ); + print $form->selectarray('object_status', $liststatus, GETPOST('object_status'), -4); + } + if ($mode == 'supplier') + { + $formorder->selectSupplierOrderStatus((strstr($object_status, ',')?-1:$object_status), 0, 'object_status'); + } + print '</td></tr>'; // Year print '<tr><td align="left">'.$langs->trans("Year").'</td><td align="left">'; if (! in_array($year,$arrayyears)) $arrayyears[$year]=$year; diff --git a/htdocs/commande/tpl/linkedobjectblock.tpl.php b/htdocs/commande/tpl/linkedobjectblock.tpl.php index 98e931db9f8d290a1922e1e896047c66f11ad296..38efbc91ca22dedadf606f106b82f94bda9bfda7 100644 --- a/htdocs/commande/tpl/linkedobjectblock.tpl.php +++ b/htdocs/commande/tpl/linkedobjectblock.tpl.php @@ -24,41 +24,60 @@ <?php global $user; +global $noMoreLinkedObjectBlockAfter; $langs = $GLOBALS['langs']; $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; + $langs->load("orders"); +$total=0; $ilink=0; $var=true; -$total=0; foreach($linkedObjectBlock as $key => $objectlink) { - $var=!$var; + $ilink++; + $var=!$var; + $trclass=($var?'pair':'impair'); + if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; ?> -<tr <?php echo $GLOBALS['bc'][$var]; ?> > - <td><?php echo $langs->trans("CustomerOrder"); ?></td> - <td><?php echo $objectlink->getNomUrl(1); ?></td> - <td align="center"><?php echo $objectlink->ref_client; ?></td> - <td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td> - <td align="right"><?php - if ($user->rights->commande->lire) { - $total = $total + $objectlink->total_ht; - echo price($objectlink->total_ht); - } ?></td> - <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> - <td align="right"> - <?php - // For now, shipments must stay linked to order, so link is not deletable - if($object->element != 'shipping') { - ?> - <a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a> - <?php - } - ?> - </td> -</tr> + <tr class="<?php echo $trclass; ?>"> + <td><?php echo $langs->trans("CustomerOrder"); ?></td> + <td><?php echo $objectlink->getNomUrl(1); ?></td> + <td align="center"><?php echo $objectlink->ref_client; ?></td> + <td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td> + <td align="right"><?php + if ($user->rights->commande->lire) { + $total = $total + $objectlink->total_ht; + echo price($objectlink->total_ht); + } ?></td> + <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> + <td align="right"> + <?php + // For now, shipments must stay linked to order, so link is not deletable + if($object->element != 'shipping') { + ?> + <a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a> + <?php + } + ?> + </td> + </tr> <?php } +if (count($linkedObjectBlock) > 1) +{ + ?> + <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>"> + <td><?php echo $langs->trans("Total"); ?></td> + <td></td> + <td align="center"></td> + <td align="center"></td> + <td align="right"><?php echo price($total); ?></td> + <td align="right"></td> + <td align="right"></td> + </tr> + <?php +} ?> <!-- END PHP TEMPLATE --> \ No newline at end of file diff --git a/htdocs/compta/bank/annuel.php b/htdocs/compta/bank/annuel.php index 9acf83db3993ee14eb2be629fa20ed4633df83fa..f82177e0b21b5be5afd6da329865688c6c04174d 100644 --- a/htdocs/compta/bank/annuel.php +++ b/htdocs/compta/bank/annuel.php @@ -32,6 +32,9 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; $langs->load("banks"); $langs->load("categories"); +$WIDTH=DolGraph::getDefaultGraphSizeForStats('width',768); +$HEIGHT=DolGraph::getDefaultGraphSizeForStats('height',200); + $id=GETPOST('account')?GETPOST('account','alpha'):GETPOST('id'); $ref=GETPOST('ref'); @@ -53,6 +56,12 @@ else $year_end=$year_start+2; } + + +/* + * View + */ + $title = $langs->trans("FinancialAccount").' - '.$langs->trans("IOMonthlyReporting"); $helpurl = ""; llxHeader('',$title,$helpurl); @@ -276,10 +285,6 @@ if ($result < 0) } else { - // Definition de $width et $height - $width = 480; - $height = 300; - // Calcul de $min et $max $sql = "SELECT MIN(b.datev) as min, MAX(b.datev) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."bank as b"; @@ -374,8 +379,8 @@ else $px1->SetMaxValue($px1->GetCeilMaxValue()<0?0:$px1->GetCeilMaxValue()); $px1->SetMinValue($px1->GetFloorMinValue()>0?0:$px1->GetFloorMinValue()); $px1->SetTitle($title); - $px1->SetWidth($width); - $px1->SetHeight($height); + $px1->SetWidth($WIDTH); + $px1->SetHeight($HEIGHT); $px1->SetType(array('line','line','line')); $px1->SetShading(3); $px1->setBgColor('onglet'); @@ -461,8 +466,8 @@ else $px2->SetMaxValue($px2->GetCeilMaxValue()<0?0:$px2->GetCeilMaxValue()); $px2->SetMinValue($px2->GetFloorMinValue()>0?0:$px2->GetFloorMinValue()); $px2->SetTitle($title); - $px2->SetWidth($width); - $px2->SetHeight($height); + $px2->SetWidth($WIDTH); + $px2->SetHeight($HEIGHT); $px2->SetType(array('line','line','line')); $px2->SetShading(3); $px2->setBgColor('onglet'); diff --git a/htdocs/compta/bank/bankentries.php b/htdocs/compta/bank/bankentries.php index bb56c49485417afe143822bc1d2be6b18f759f57..20a5a2e8b85066c066bbc6be2fd9e5c31da70349 100644 --- a/htdocs/compta/bank/bankentries.php +++ b/htdocs/compta/bank/bankentries.php @@ -108,14 +108,13 @@ if (! $sortfield) $sortfield='b.datev'; $mode_balance_ok=false; //if (($sortfield == 'b.datev' || $sortfield == 'b.datev, b.dateo, b.rowid')) // TODO Manage balance when account not selected -if (($sortfield == 'b.datev' || $sortfield == 'b.datev, b.dateo, b.rowid') && ($id > 0 || ! empty($ref))) +if (($sortfield == 'b.datev' || $sortfield == 'b.datev, b.dateo, b.rowid')) { $sortfield = 'b.datev, b.dateo, b.rowid'; - $mode_balance_ok = true; + if ($id > 0 || ! empty($ref) || $account > 0) $mode_balance_ok = true; } if (strtolower($sortorder) == 'desc') $mode_balance_ok = false; - $object = new Account($db); if ($id > 0 || ! empty($ref)) { @@ -527,6 +526,9 @@ if ($page >= $nbtotalofpages) if ($page < 0) $page = 0; } +// If not account defined $mode_balance_ok=false +if (empty($account)) $mode_balance_ok=false; +// If a search is done $mode_balance_ok=false if (! empty($search_ref)) $mode_balance_ok=false; if (! empty($req_nb)) $mode_balance_ok=false; if (! empty($type)) $mode_balance_ok=false; @@ -879,6 +881,12 @@ if ($resql) // If we are in a situation where we need/can show balance, we calculate the start of balance if (! $balancecalculated && ! empty($arrayfields['balance']['checked']) && $mode_balance_ok) { + if (! $account) + { + dol_print_error('', 'account is not defined but $mode_balance_ok is true'); + exit; + } + //Loop on each record $sign = 1; $i = 0; diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index a608a71bf7d99a10d59aee3620fea84adb161b8c..43efcc93d574b43d16fc4d55967c4c44d20595e9 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -1,7 +1,7 @@ <?php /* Copyright (C) 2002-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org> - * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2016 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> @@ -840,11 +840,11 @@ else // Label print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td>'; - print '<td><input size="30" type="text" class="flat" name="label" value="'.(isset($_POST["label"])?$_POST["label"]:$object->label).'"></td></tr>'; + print '<td><input type="text" class="flat minwidth300" name="label" value="'.(isset($_POST["label"])?$_POST["label"]:$object->label).'"></td></tr>'; // Type print '<tr><td class="fieldrequired">'.$langs->trans("AccountType").'</td>'; - print '<td>'; + print '<td class="maxwidth200onsmartphone">'; $formbank->selectTypeOfBankAccount((isset($_POST["type"])?$_POST["type"]:$object->type),"type"); print '</td></tr>'; @@ -852,7 +852,7 @@ else print '<tr><td class="fieldrequired">'.$langs->trans("Currency"); print '<input type="hidden" value="'.$object->currency_code.'">'; print '</td>'; - print '<td>'; + print '<td class="maxwidth200onsmartphone">'; $selectedcode=$object->currency_code; if (! $selectedcode) $selectedcode=$conf->currency; print $form->selectCurrency((isset($_POST["account_currency_code"])?$_POST["account_currency_code"]:$selectedcode), 'account_currency_code'); @@ -862,8 +862,8 @@ else // Status print '<tr><td class="fieldrequired">'.$langs->trans("Status").'</td>'; - print '<td>'; - print $form->selectarray("clos", $object->status,(isset($_POST["clos"])?$_POST["clos"]:$object->clos)); + print '<td class="maxwidth200onsmartphone">'; + print $form->selectarray("clos", $object->status, (isset($_POST["clos"])?$_POST["clos"]:$object->clos)); print '</td></tr>'; // Country @@ -874,13 +874,13 @@ else $object->country_code = getCountry($selectedcode, 2); // Force country code on account to have following field on bank fields matching country rules print '<tr><td class="fieldrequired">'.$langs->trans("Country").'</td>'; - print '<td>'; + print '<td class="maxwidth200onsmartphone">'; print $form->select_country($selectedcode,'account_country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '</td></tr>'; // State - print '<tr><td>'.$langs->trans('State').'</td><td>'; + print '<tr><td>'.$langs->trans('State').'</td><td class="maxwidth200onsmartphone">'; if ($selectedcode) { print $formcompany->select_state(isset($_POST["account_state_id"])?$_POST["account_state_id"]:$object->state_id,$selectedcode,'account_state_id'); @@ -909,7 +909,7 @@ else // Web print '<tr><td>'.$langs->trans("Web").'</td>'; - print '<td><input size="50" type="text" class="flat" name="url" value="'.(isset($_POST["url"])?$_POST["url"]:$object->url).'">'; + print '<td><input class="maxwidth200onsmartphone" type="text" class="flat" name="url" value="'.(isset($_POST["url"])?$_POST["url"]:$object->url).'">'; print '</td></tr>'; // Tags-Categories @@ -931,7 +931,7 @@ else print '<td>'; // Editor wysiwyg require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - $doleditor=new DolEditor('account_comment',(GETPOST("account_comment")?GETPOST("account_comment"):$object->comment),'',90,'dolibarr_notes','',false,true,$conf->global->FCKEDITOR_ENABLE_SOCIETE,4,70); + $doleditor=new DolEditor('account_comment',(GETPOST("account_comment")?GETPOST("account_comment"):$object->comment),'',90,'dolibarr_notes','',false,true,$conf->global->FCKEDITOR_ENABLE_SOCIETE,4,'95%'); $doleditor->Create(); print '</td></tr>'; @@ -1020,22 +1020,22 @@ else // IBAN print '<tr><td>'.$langs->trans($ibankey).'</td>'; - print '<td><input size="34" maxlength="34" type="text" class="flat" name="iban" value="'.$object->iban.'"></td></tr>'; + print '<td><input class="minwidth300 maxwidth200onsmartphone" maxlength="34" type="text" class="flat" name="iban" value="'.$object->iban.'"></td></tr>'; print '<tr><td>'.$langs->trans($bickey).'</td>'; - print '<td><input size="11" maxlength="11" type="text" class="flat" name="bic" value="'.$object->bic.'"></td></tr>'; + print '<td><input class="minwidth150 maxwidth200onsmartphone" maxlength="11" type="text" class="flat" name="bic" value="'.$object->bic.'"></td></tr>'; print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>'; - print "<textarea class=\"flat\" name=\"domiciliation\" rows=\"2\" cols=\"40\">"; + print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">'; print $object->domiciliation; print "</textarea></td></tr>"; print '<tr><td>'.$langs->trans("BankAccountOwner").'</td>'; - print '<td><input size="30" type="text" class="flat" name="proprio" value="'.$object->proprio.'"></td>'; + print '<td><input class="maxwidth200onsmartphone" type="text" class="flat" name="proprio" value="'.$object->proprio.'"></td>'; print '</tr>'; print '<tr><td>'.$langs->trans("BankAccountOwnerAddress").'</td><td>'; - print "<textarea class=\"flat\" name=\"owner_address\" rows=\"2\" cols=\"40\">"; + print '<textarea class="flat quatrevingtpercent" name="owner_address" rows="'.ROWS_2.'">'; print $object->owner_address; print "</textarea></td></tr>"; diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index f786158ccbefb7b1b80ec3165b8c0e598cb01996..c25bc073d1f1c23eae0e76a85dad4ed273f85c72 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -236,7 +236,7 @@ class Account extends CommonObject $this->status = array( self::STATUS_OPEN => $langs->trans("StatusAccountOpened"), - self::STATUS_CLOSED => $langs->trans("StatusAccountOpened") + self::STATUS_CLOSED => $langs->trans("StatusAccountClosed") ); } @@ -1244,7 +1244,7 @@ class Account extends CommonObject } if ($withpicto) $result.=($link.img_object($label, 'account', 'class="classfortooltip"').$linkend.' '); - $result.=$link.$this->label.$linkend; + $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/compta/bank/index.php b/htdocs/compta/bank/index.php index 7d3073d71294ed47107206875381d9e15727ffeb..56735d15fceec5b5dc7bde92f8d84c084a7d7d58 100644 --- a/htdocs/compta/bank/index.php +++ b/htdocs/compta/bank/index.php @@ -39,6 +39,9 @@ $show_files=GETPOST('show_files','int'); $confirm=GETPOST('confirm','alpha'); $toselect = GETPOST('toselect', 'array'); +$search_ref=GETPOST('search_ref','alpha'); +$search_label=GETPOST('search_label','alpha'); +$search_number=GETPOST('search_number','alpha'); $statut=GETPOST('statut')?GETPOST('statut', 'alpha'):'opened'; // 'all' or ''='opened' $optioncss = GETPOST('optioncss','alpha'); @@ -115,7 +118,10 @@ include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // All test are required to be compatible with all browsers { $statut = 'all'; - + $search_ref=''; + $search_label=''; + $search_number=''; + $search_statut=''; } @@ -124,6 +130,8 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP * View */ +$form=new Form($db); + $title=$langs->trans('BankAccounts'); // Load array of financial accounts (opened by default) @@ -139,9 +147,11 @@ $sql.=$hookmanager->resPrint; $sql.= " FROM ".MAIN_DB_PREFIX."bank_account as b"; if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bankcacount_extrafields as ef on (c.rowid = ef.fk_object)"; $sql.= " WHERE entity IN (".getEntity('bank_account', 1).")"; -if ($statut == 'opened') $sql.= " AND clos = 0"; -if ($statut == 'closed') $sql.= " AND clos = 1"; - +if ($statut == 'opened') $sql.= " AND clos = 0"; +if ($statut == 'closed') $sql.= " AND clos = 1"; +if ($search_ref != '') $sql.=natural_search('b.ref', $search_ref); +if ($search_label != '') $sql.=natural_search('b.label', $search_label); +if ($search_number != '') $sql.=natural_search('b.number', $search_number); // Add where from extra fields foreach ($search_array_options as $key => $val) { @@ -202,6 +212,9 @@ $arrayofselected=is_array($toselect)?$toselect:array(); $param=''; if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; +if ($search_ref != '') $param.='&search_ref='.$search_ref; +if ($search_label != '') $param.='&search_label='.$search_label; +if ($search_number != '') $param.='&search_number='.$search_number; if ($statut != '') $param.='&statut='.$statut; if ($show_files) $param.='&show_files=' .$show_files; if ($optioncss != '') $param.='&optioncss='.$optioncss; @@ -266,8 +279,8 @@ print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"") // Fields title print '<tr class="liste_titre">'; if (! empty($arrayfields['b.ref']['checked'])) print_liste_field_titre($arrayfields['b.ref']['label'],$_SERVER["PHP_SELF"],'b.ref','',$param,'',$sortfield,$sortorder); -if (! empty($arrayfields['accountype']['checked'])) print_liste_field_titre($arrayfields['accountype']['label'],$_SERVER["PHP_SELF"],'','',$param,'',$sortfield,$sortorder); if (! empty($arrayfields['b.label']['checked'])) print_liste_field_titre($arrayfields['b.label']['label'],$_SERVER["PHP_SELF"],'b.label','',$param,'',$sortfield,$sortorder); +if (! empty($arrayfields['accountype']['checked'])) print_liste_field_titre($arrayfields['accountype']['label'],$_SERVER["PHP_SELF"],'','',$param,'',$sortfield,$sortorder); if (! empty($arrayfields['b.number']['checked'])) print_liste_field_titre($arrayfields['b.number']['label'],$_SERVER["PHP_SELF"],'b.number','',$param,'',$sortfield,$sortorder); if (! empty($arrayfields['toreconcile']['checked'])) print_liste_field_titre($arrayfields['toreconcile']['label'],$_SERVER["PHP_SELF"],'','',$param,'align="center"',$sortfield,$sortorder); if (! empty($arrayfields['b.clos']['checked'])) print_liste_field_titre($arrayfields['b.clos']['label'],$_SERVER["PHP_SELF"],'b.clos','',$param,'align="center"',$sortfield,$sortorder); @@ -300,17 +313,17 @@ if (! empty($arrayfields['b.ref']['checked'])) print '<input class="flat" size="6" type="text" name="search_ref" value="'.$search_ref.'">'; print '</td>'; } -// Account type -if (! empty($arrayfields['accountype']['checked'])) +// Label +if (! empty($arrayfields['b.label']['checked'])) { print '<td class="liste_titre">'; + print '<input class="flat" size="6" type="text" name="search_label" value="'.$search_label.'">'; print '</td>'; } -// Ref -if (! empty($arrayfields['b.label']['checked'])) +// Account type +if (! empty($arrayfields['accountype']['checked'])) { print '<td class="liste_titre">'; - print '<input class="flat" size="6" type="text" name="search_label" value="'.$search_label.'">'; print '</td>'; } // Number @@ -403,10 +416,10 @@ foreach ($accounts as $key=>$type) print '<tr '.$bc[$var].'>'; print '<td class="titlefield">'.$acc->getNomUrl(1).'</td>'; + print '<td>'.$acc->label.'</td>'; print '<td>'; print $acc->type_lib[$acc->type]; print '</td>'; - print '<td>'.$acc->bank.'</td>'; print '<td>'.$acc->number.'</td>'; print '<td align="center">'; if ($acc->rappro) @@ -421,7 +434,9 @@ foreach ($accounts as $key=>$type) } else print $langs->trans("FeatureDisabled"); print '</td>'; - print '<td align="center">'.$acc->getLibStatut(2).'</td>'; + // Status + print '<td align="center">'.$acc->getLibStatut(5).'</td>'; + // print '<td align="right">'; print '<a href="'.DOL_URL_ROOT.'/compta/bankentries.php?id='.$acc->id.'">'.price($solde, 0, $langs, 0, 0, -1, $acc->currency_code).'</a>'; print '</td>'; @@ -442,7 +457,7 @@ foreach ($accounts as $key=>$type) $total[$acc->currency_code] += $solde; //} } -if (! $found) print '<tr '.$bc[$var].'><td colspan="7" class="opacitymedium">'.$langs->trans("None").'</td></tr>'; +if (! $found) print '<tr '.$bc[$var].'><td colspan="8" class="opacitymedium">'.$langs->trans("None").'</td></tr>'; // Total foreach ($total as $key=>$solde) { diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 2f4f887f6527a84ed703517856790c1af3f94104..2bf69038e78c8aae9c0ab56d786d228dacc03580 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -1433,7 +1433,7 @@ if (empty($reshook)) $pu_ht = price($prodcustprice->lines[0]->price); $pu_ttc = price($prodcustprice->lines[0]->price_ttc); $price_base_type = $prodcustprice->lines[0]->price_base_type; - $prod->tva_tx = $prodcustprice->lines[0]->tva_tx; + $tva_tx = $prodcustprice->lines[0]->tva_tx; } } } @@ -2933,17 +2933,17 @@ else if ($id > 0 || ! empty($ref)) } } $morehtmlref.='</div>'; - + $object->totalpaye = $totalpaye; // To give a chance to dol_banner_tab to use already paid amount to show correct status - + dol_banner_tab($object, 'ref', $linkback, 1, 'facnumber', 'ref', $morehtmlref, '', 0, '', $morehtmlright); - + print '<div class="fichecenter">'; print '<div class="fichehalfleft">'; print '<div class="underbanner clearboth"></div>'; - + print '<table class="border" width="100%">'; - + // Type print '<tr><td class="titlefield">' . $langs->trans('Type') . '</td><td>'; print $object->getLibType(); @@ -3303,7 +3303,7 @@ else if ($id > 0 || ! empty($ref)) include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php'; print '</table>'; - + print '</div>'; print '<div class="fichehalfright">'; print '<div class="ficheaddleft">'; @@ -3328,15 +3328,15 @@ else if ($id > 0 || ! empty($ref)) print '<td class="nowrap">' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; print '</tr>'; } - + // Amount - print '<tr><td class="titlefieldmiddle">' . $langs->trans('AmountHT') . '</td>'; + print '<tr><td class="titlefield">' . $langs->trans('AmountHT') . '</td>'; print '<td class="nowrap">' . price($object->total_ht, 1, '', 1, - 1, - 1, $conf->currency) . '</td></tr>'; - + // Vat print '<tr><td>' . $langs->trans('AmountVAT') . '</td><td colspan="3" class="nowrap">' . price($object->total_tva, 1, '', 1, - 1, - 1, $conf->currency) . '</td></tr>'; print '</tr>'; - + // Amount Local Taxes if (($mysoc->localtax1_assuj == "1" && $mysoc->useLocalTax(1)) || $object->total_localtax1 != 0) // Localtax1 { @@ -3348,7 +3348,7 @@ else if ($id > 0 || ! empty($ref)) print '<tr><td>' . $langs->transcountry("AmountLT2", $mysoc->country_code) . '</td>'; print '<td class=nowrap">' . price($object->total_localtax2, 1, '', 1, - 1, - 1, $conf->currency) . '</td></tr>'; } - + // Revenue stamp if ($selleruserevenustamp) // Test company use revenue stamp { @@ -3375,14 +3375,14 @@ else if ($id > 0 || ! empty($ref)) } print '</td></tr>'; } - + // Total with tax print '<tr><td>' . $langs->trans('AmountTTC') . '</td><td class="nowrap">' . price($object->total_ttc, 1, '', 1, - 1, - 1, $conf->currency) . '</td></tr>'; - + print '</table>'; - + // List of payments - + $sign = 1; if ($object->type == Facture::TYPE_CREDIT_NOTE) $sign = - 1; $nbrows = 8; @@ -3491,9 +3491,9 @@ else if ($id > 0 || ! empty($ref)) if (count($object->tab_previous_situation_invoice) > 0 || count($object->tab_next_situation_invoice) > 0) print '</table>'; } - + print '<table class="noborder paymenttable" width="100%">'; - + // List of payments already done print '<tr class="liste_titre">'; print '<td class="liste_titre">' . ($object->type == Facture::TYPE_CREDIT_NOTE ? $langs->trans("PaymentsBack") : $langs->trans('Payments')) . '</td>'; @@ -3505,9 +3505,9 @@ else if ($id > 0 || ! empty($ref)) print '<td class="liste_titre" align="right">' . $langs->trans('Amount') . '</td>'; print '<td class="liste_titre" width="18"> </td>'; print '</tr>'; - + $var = true; - + // Payments already done (from payment on this invoice) $sql = 'SELECT p.datep as dp, p.ref, p.num_paiement, p.rowid, p.fk_bank,'; $sql .= ' c.code as payment_code, c.libelle as payment_label,'; @@ -3518,12 +3518,12 @@ else if ($id > 0 || ! empty($ref)) $sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'bank_account as ba ON b.fk_account = ba.rowid'; $sql .= ' WHERE pf.fk_facture = ' . $object->id . ' AND p.fk_paiement = c.id AND pf.fk_paiement = p.rowid'; $sql .= ' ORDER BY p.datep, p.tms'; - + $result = $db->query($sql); if ($result) { $num = $db->num_rows($result); $i = 0; - + // if ($object->type != 2) // { if ($num > 0) { @@ -3563,7 +3563,7 @@ else if ($id > 0 || ! empty($ref)) } else { dol_print_error($db); } - + if ($object->type != Facture::TYPE_CREDIT_NOTE) { // Total already paid print '<tr><td colspan="' . $nbcols . '" align="right">'; @@ -3572,10 +3572,10 @@ else if ($id > 0 || ! empty($ref)) else print $langs->trans('AlreadyPaid'); print ' :</td><td align="right"'.(($totalpaye > 0)?' class="amountalreadypaid"':'').'>' . price($totalpaye) . '</td><td> </td></tr>'; - + $resteapayeraffiche = $resteapayer; $cssforamountpaymentcomplete = 'amountpaymentcomplete'; - + // Loop on each credit note or deposit amount applied $creditnoteamount = 0; $depositamount = 0; @@ -3611,7 +3611,7 @@ else if ($id > 0 || ! empty($ref)) } else { dol_print_error($db); } - + // Paye partiellement 'escompte' if (($object->statut == Facture::STATUS_CLOSED || $object->statut == Facture::STATUS_ABANDONED) && $object->close_code == 'discount_vat') { print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">'; @@ -3647,7 +3647,7 @@ else if ($id > 0 || ! empty($ref)) $resteapayeraffiche = 0; $cssforamountpaymentcomplete = ''; } - + // Billed print '<tr><td colspan="' . $nbcols . '" align="right">' . $langs->trans("Billed") . ' :</td><td align="right">' . price($object->total_ttc) . '</td><td> </td></tr>'; @@ -3667,10 +3667,10 @@ else if ($id > 0 || ! empty($ref)) print '<tr><td colspan="' . $nbcols . '" align="right">'; print $langs->trans('AlreadyPaidBack'); print ' :</td><td align="right">' . price($sign * $totalpaye) . '</td><td> </td></tr>'; - + // Billed print '<tr><td colspan="' . $nbcols . '" align="right">' . $langs->trans("Billed") . ' :</td><td align="right">' . price($sign * $object->total_ttc) . '</td><td> </td></tr>'; - + // Remainder to pay back print '<tr><td colspan="' . $nbcols . '" align="right">'; if ($resteapayeraffiche <= 0) @@ -3680,27 +3680,26 @@ else if ($id > 0 || ! empty($ref)) print ' :</td>'; print '<td align="right" bgcolor="#f0f0f0"><b>' . price($sign * $resteapayeraffiche) . '</b></td>'; print '<td class="nowrap"> </td></tr>'; - + // Sold credit note // print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans('TotalTTC').' :</td>'; // print '<td align="right" style="border: 1px solid;" bgcolor="#f0f0f0"><b>'.price($sign * // $object->total_ttc).'</b></td><td> </td></tr>'; } - + print '</table>'; - + // Margin Infos if (! empty($conf->margin->enabled)) { $formmargin->displayMarginInfos($object); } - print '</div>'; print '</div>'; print '</div>'; - + print '<div class="clearboth"></div><br>'; - + if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) { $blocname = 'contacts'; $title = $langs->trans('ContactsAddresses'); @@ -3811,8 +3810,7 @@ else if ($id > 0 || ! empty($ref)) print '<div class="tabsAction">'; $parameters = array(); - $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been - // modified by hook + $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { // Editer une facture deja validee, sans paiement effectue et pas exporte en compta if ($object->statut == 1) diff --git a/htdocs/compta/facture/apercu.php b/htdocs/compta/facture/apercu.php index 8300545cb22a5dd0fb027bac387c147c9a3edc1d..258b2434f600d8be86e2a7e039830d1c52bf056a 100644 --- a/htdocs/compta/facture/apercu.php +++ b/htdocs/compta/facture/apercu.php @@ -188,7 +188,7 @@ if ($id > 0 || ! empty($ref)) // Remise dispo de type remise fixe (not credit note) $filter='fk_facture_source IS NULL'; print '<br>'; - $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id',$soc->id, $absolute_discount, $filter, $resteapayer, ' - '.$addabsolutediscount); + $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id',$soc->id, $absolute_discount, $filter, $resteapayer, ' - '.$addabsolutediscount, 1); } } else @@ -220,7 +220,7 @@ if ($id > 0 || ! empty($ref)) // Remise dispo de type avoir $filter='fk_facture_source IS NOT NULL'; if (! $absolute_discount) print '<br>'; - $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filter, $resteapayer); + $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filter, $resteapayer, '', 1); } } if (! $absolute_discount && ! $absolute_creditnote) diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index 33da64e322167c38443ec3a1990082878c300c51..c1381be0ea55eeab3876853ad861074e97a63c7e 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -40,6 +40,7 @@ if (! empty($conf->projet->enabled)) { $langs->load('bills'); $langs->load('compta'); +$langs->load('admin'); // Security check $id=(GETPOST('facid','int')?GETPOST('facid','int'):GETPOST('id','int')); @@ -504,7 +505,7 @@ if (empty($reshook)) $pu_ht = price($prodcustprice->lines[0]->price); $pu_ttc = price($prodcustprice->lines[0]->price_ttc); $price_base_type = $prodcustprice->lines[0]->price_base_type; - $prod->tva_tx = $prodcustprice->lines[0]->tva_tx; + $tva_tx = $prodcustprice->lines[0]->tva_tx; } } } diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php index 87a27166ae89fcbb065b97307b7c2630c497ea5d..879d5abfee4139435417c9b160ed7dd652c3b9a8 100644 --- a/htdocs/compta/facture/prelevement.php +++ b/htdocs/compta/facture/prelevement.php @@ -263,7 +263,7 @@ if ($object->id > 0) // Remise dispo de type non avoir $filter='fk_facture_source IS NULL'; print '<br>'; - $form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$object->id,0,'remise_id',$object->thirdparty->id,$absolute_discount,$filter,$resteapayer); + $form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$object->id,0,'remise_id',$object->thirdparty->id,$absolute_discount,$filter,$resteapayer,'',1); } } if ($absolute_creditnote > 0) @@ -283,7 +283,7 @@ if ($object->id > 0) // Remise dispo de type avoir $filter='fk_facture_source IS NOT NULL'; if (! $absolute_discount) print '<br>'; - $form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$object->id,0,'remise_id_for_payment',$object->thirdparty->id,$absolute_creditnote,$filter,$resteapayer); + $form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$object->id,0,'remise_id_for_payment',$object->thirdparty->id,$absolute_creditnote,$filter,$resteapayer,'',1); } } if (! $absolute_discount && ! $absolute_creditnote) print $langs->trans("CompanyHasNoAbsoluteDiscount").'.'; diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index 9ca0c2f7718dca6bb1d5810b61a7dd22841ff445..5c5aa8489be65fbae22eaa772f2ecbc62938a755 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -36,6 +36,8 @@ $mode=GETPOST("mode")?GETPOST("mode"):'customer'; if ($mode == 'customer' && ! $user->rights->facture->lire) accessforbidden(); if ($mode == 'supplier' && ! $user->rights->fournisseur->facture->lire) accessforbidden(); +$object_status=GETPOST('object_status'); + $userid=GETPOST('userid','int'); $socid=GETPOST('socid','int'); // Security check @@ -80,7 +82,14 @@ print load_fiche_titre($title, $mesg, 'title_accountancy.png'); dol_mkdir($dir); $stats = new FactureStats($db, $socid, $mode, ($userid>0?$userid:0)); - +if ($mode == 'customer') +{ + if ($object_status != '' && $object_status >= -1) $stats->where .= ' AND f.fk_statut IN ('.$object_status.')'; +} +if ($mode == 'supplier') +{ + if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND f.fk_statut IN ('.$object_status.')'; +} // Build graphic number of object // $data = array(array('Lib',val1,val2,val3),...) @@ -246,6 +255,19 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; print '<tr><td>'.$langs->trans("CreatedBy").'</td><td>'; print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; + // Status + print '<tr><td align="left">'.$langs->trans("Status").'</td><td align="left">'; + if ($mode == 'customer') + { + $liststatus=array('0'=>$langs->trans("BillStatusDraft"), '1'=>$langs->trans("BillStatusNotPaid"), '2'=>$langs->trans("BillStatusPaid"), '3'=>$langs->trans("BillStatusCanceled")); + print $form->selectarray('object_status', $liststatus, $object_status, 1); + } + if ($mode == 'supplier') + { + $liststatus=array('0'=>$langs->trans("BillStatusDraft"),'1'=>$langs->trans("BillStatusNotPaid"), '2'=>$langs->trans("BillStatusPaid")); + print $form->selectarray('object_status', $liststatus, $object_status, 1); + } + print '</td></tr>'; // Year print '<tr><td>'.$langs->trans("Year").'</td><td>'; if (! in_array($year,$arrayyears)) $arrayyears[$year]=$year; diff --git a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php index 56e8645b8c7f92955877d27aa936ff3720ba09fa..16aa54e229da4fa0ce09ad8d1dfd25f068b5ac46 100644 --- a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php +++ b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php @@ -24,32 +24,51 @@ <?php global $user; +global $noMoreLinkedObjectBlockAfter; $langs = $GLOBALS['langs']; $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; + $langs->load("bills"); +$total=0; $ilink=0; $var=true; -$total=0; foreach($linkedObjectBlock as $key => $objectlink) { - $var=!$var; + $ilink++; + $var=!$var; + $trclass=($var?'pair':'impair'); + if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; ?> -<tr <?php echo $GLOBALS['bc'][$var]; ?> > - <td><?php echo $langs->trans("CustomerInvoice"); ?></td> - <td><?php echo $objectlink->getNomUrl(1); ?></td> - <td align="center"><?php echo $objectlink->ref_client; ?></td> - <td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td> - <td align="right"><?php - if ($user->rights->facture->lire) { - $total = $total + $objectlink->total_ht; - echo price($objectlink->total_ht); - } ?></td> - <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> - <td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> -</tr> + <tr class="<?php echo $trclass; ?>"> + <td><?php echo $langs->trans("CustomerInvoice"); ?></td> + <td><?php echo $objectlink->getNomUrl(1); ?></td> + <td align="center"><?php echo $objectlink->ref_client; ?></td> + <td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td> + <td align="right"><?php + if ($user->rights->facture->lire) { + $total = $total + $objectlink->total_ht; + echo price($objectlink->total_ht); + } ?></td> + <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> + <td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> + </tr> <?php } +if (count($linkedObjectBlock) > 1) +{ + ?> + <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>"> + <td><?php echo $langs->trans("Total"); ?></td> + <td></td> + <td align="center"></td> + <td align="center"></td> + <td align="right"><?php echo price($total); ?></td> + <td align="right"></td> + <td align="right"></td> + </tr> + <?php +} ?> <!-- END PHP TEMPLATE --> \ No newline at end of file diff --git a/htdocs/compta/facture/tpl/linkedobjectblockForRec.tpl.php b/htdocs/compta/facture/tpl/linkedobjectblockForRec.tpl.php index ce94e4a1212f227ac68a88bc9ce6c321075a5345..781f5609915a2a6d74e255ab57548013b4fb63e6 100644 --- a/htdocs/compta/facture/tpl/linkedobjectblockForRec.tpl.php +++ b/htdocs/compta/facture/tpl/linkedobjectblockForRec.tpl.php @@ -24,16 +24,21 @@ <?php global $user; +global $noMoreLinkedObjectBlockAfter; $langs = $GLOBALS['langs']; $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; + $langs->load("bills"); +$total=0; $ilink=0; $var=true; -$total=0; foreach($linkedObjectBlock as $key => $objectlink) { - $var=!$var; + $ilink++; + $var=!$var; + $trclass=($var?'pair':'impair'); + if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; ?> <tr <?php echo $GLOBALS['bc'][$var]; ?> > <td><?php echo $langs->trans("RepeatableInvoice"); ?></td> diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index 1dd1c46299a8c2587c53f56b8cba9d771dbc44c5..0d0552b41ade5632f32ce0f961d76336ce99d439 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -117,7 +117,7 @@ if (count($listofsearchfields)) { if ($i == 0) print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("Search").'</td></tr>'; print '<tr '.$bc[false].'>'; - print '<td class="nowrap"><label for="'.$key.'">'.$langs->trans($value["text"]).'</label></td><td><input type="text" class="flat inputsearch" name="'.$key.'" id="'.$key.'" size="14"></td>'; + print '<td class="nowrap"><label for="'.$key.'">'.$langs->trans($value["text"]).'</label></td><td><input type="text" class="flat inputsearch" name="'.$key.'" id="'.$key.'"></td>'; if ($i == 0) print '<td rowspan="'.count($listofsearchfields).'"><input type="submit" value="'.$langs->trans("Search").'" class="button"></td>'; print '</tr>'; $i++; @@ -577,7 +577,7 @@ if (! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; - print '<td>'.$langs->trans("ContributionsToPay").($num?' <span class="badge">'.$num.'</span>':'').'</td>'; + print '<td>'.$langs->trans("ContributionsToPay").($num?' <a href="'.DOL_URL_ROOT.'/compta/sociales/index.php?status=0"><span class="badge">'.$num.'</span></a>':'').'</td>'; print '<td align="center">'.$langs->trans("DateDue").'</td>'; print '<td align="right">'.$langs->trans("AmountTTC").'</td>'; print '<td align="right">'.$langs->trans("Paid").'</td>'; @@ -663,7 +663,7 @@ if (! empty($conf->facture->enabled) && ! empty($conf->commande->enabled) && $us $i = 0; print '<table class="noborder" width="100%">'; print "<tr class=\"liste_titre\">"; - print '<td colspan="2">'.$langs->trans("OrdersToBill").' <a href="'.DOL_URL_ROOT.'/commande/list.php?status=3&afacturer=1"><span class="badge">'.$num.'</span></a></td>'; + print '<td colspan="2">'.$langs->trans("OrdersDeliveredToBill").' <a href="'.DOL_URL_ROOT.'/commande/list.php?viewstatut=3&billed=0"><span class="badge">'.$num.'</span></a></td>'; if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.$langs->trans("AmountHT").'</td>'; print '<td align="right">'.$langs->trans("AmountTTC").'</td>'; print '<td align="right">'.$langs->trans("ToBill").'</td>'; diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 63d4b9930edeb41767a8a82bc61fe03a6e57edfd..b39e5c47f7f6b5a416204a4285b8e0a7927d2f93 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -534,7 +534,7 @@ if ($modecompta == 'CREANCES-DETTES') print '<td colspan="3" align="right">'.price(-$subtotal_ttc).'</td>'; print '</tr>'; -if ($mysoc->tva_assuj == 'franchise') // Non assujeti +if ($mysoc->tva_assuj == 'franchise') // Non assujetti { // Total print '<tr>'; @@ -572,7 +572,7 @@ if (! empty($conf->salaries->enabled)) $sql.= " WHERE p.entity = ".$conf->entity; if (! empty($date_start) && ! empty($date_end)) $sql.= " AND $column >= '".$db->idate($date_start)."' AND $column <= '".$db->idate($date_end)."'"; - + $sql.= " GROUP BY u.rowid, u.firstname, u.lastname, p.fk_user, p.label, dm"; $sql.= " ORDER BY u.firstname"; @@ -599,7 +599,7 @@ if (! empty($conf->salaries->enabled)) $var = !$var; print "<tr ".$bc[$var]."><td> </td>"; - print "<td>".$langs->trans("Salaries")." <a href=\"".DOL_URL_ROOT."/compta/salaries/index.php?filtre=s.fk_user=".$obj->fk_user."\">".$obj->firstname." ".$obj->lastname."</a></td>\n"; + print "<td>".$langs->trans("Salary")." <a href=\"".DOL_URL_ROOT."/compta/salaries/index.php?filtre=s.fk_user=".$obj->fk_user."\">".$obj->firstname." ".$obj->lastname."</a></td>\n"; if ($modecompta == 'CREANCES-DETTES') print '<td align="right">'.price(-$obj->amount).'</td>'; print '<td align="right">'.price(-$obj->amount).'</td>'; @@ -639,9 +639,8 @@ if (! empty($conf->expensereport->enabled)) $sql.= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid=p.fk_user_author"; $sql.= " WHERE p.entity = ".getEntity('expensereport',1); $sql.= " AND p.fk_statut>=5"; - + $column='p.date_valid'; - } else { $sql = "SELECT p.rowid, p.ref, u.rowid as userid, u.firstname, u.lastname, date_format(pe.datep,'%Y-%m') as dm, sum(p.total_ht) as amount_ht,sum(p.total_ttc) as amount_ttc"; $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as p"; @@ -650,12 +649,12 @@ if (! empty($conf->expensereport->enabled)) $sql.= " INNER JOIN ".MAIN_DB_PREFIX."c_paiement as c ON pe.fk_typepayment = c.id"; $sql.= " WHERE p.entity = ".getEntity('expensereport',1); $sql.= " AND p.fk_statut>=5"; - + $column='pe.datep'; } print '<tr><td colspan="4">'.$langs->trans("ExpenseReport").'</td></tr>'; - + if (! empty($date_start) && ! empty($date_end)) $sql.= " AND $column >= '".$db->idate($date_start)."' AND $column <= '".$db->idate($date_end)."'"; @@ -709,12 +708,12 @@ if (! empty($conf->expensereport->enabled)) } /* - * Donation + * Donations */ if (! empty($conf->don->enabled)) { - print '<tr><td colspan="4">'.$langs->trans("Donation").'</td></tr>'; + print '<tr><td colspan="4">'.$langs->trans("Donations").'</td></tr>'; if ($modecompta == 'CREANCES-DETTES') { $sql = "SELECT p.societe as name, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount"; @@ -975,7 +974,7 @@ else } -if ($mysoc->tva_assuj != 'franchise') // Assujeti +if ($mysoc->tva_assuj != 'franchise') // Assujetti { print '<tr class="liste_total">'; if ($modecompta == 'CREANCES-DETTES') @@ -995,7 +994,7 @@ $hookmanager->initHooks(array('externalbalance')); $reshook=$hookmanager->executeHooks('addBalanceLine',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks print $hookmanager->resPrint; -if ($mysoc->tva_assuj != 'franchise') // Assujeti +if ($mysoc->tva_assuj != 'franchise') // Assujetti { // Total print '<tr>'; diff --git a/htdocs/compta/sociales/index.php b/htdocs/compta/sociales/index.php index fc106de2ad1bae6dee250a31286f999186d899d4..6a4f7f836e7979466dd7eac428ef5df943f53626 100644 --- a/htdocs/compta/sociales/index.php +++ b/htdocs/compta/sociales/index.php @@ -40,6 +40,7 @@ $result = restrictedArea($user, 'tax', '', '', 'charges'); $search_ref = GETPOST('search_ref','int'); $search_label = GETPOST('search_label','alpha'); $search_amount = GETPOST('search_amount','alpha'); +$search_status = GETPOST('search_status','int'); $limit = GETPOST('limit')?GETPOST('limit','int'):$conf->liste_limit; $sortfield = GETPOST("sortfield",'alpha'); @@ -52,8 +53,8 @@ $pagenext = $page + 1; if (! $sortfield) $sortfield="cs.date_ech"; if (! $sortorder) $sortorder="DESC"; -$year=$_GET["year"]; -$filtre=$_GET["filtre"]; +$year=GETPOST("year",'int'); +$filtre=GETPOST("filtre",'int'); if (empty($_REQUEST['typeid'])) { @@ -75,6 +76,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP $search_ref=""; $search_label=""; $search_amount=""; + $search_status=''; $typeid=""; $year=""; $month=""; @@ -88,7 +90,7 @@ $form = new Form($db); $formsocialcontrib = new FormSocialContrib($db); $chargesociale_static=new ChargeSociales($db); -llxHeader(); +llxHeader('', $langs->trans("SocialContributions")); $sql = "SELECT cs.rowid as id, cs.fk_type as type, "; $sql.= " cs.amount, cs.date_ech, cs.libelle, cs.paye, cs.periode,"; @@ -99,11 +101,11 @@ $sql.= " ".MAIN_DB_PREFIX."chargesociales as cs"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiementcharge as pc ON pc.fk_charge = cs.rowid"; $sql.= " WHERE cs.fk_type = c.id"; $sql.= " AND cs.entity = ".$conf->entity; - // Search criteria -if ($search_ref) $sql.=" AND cs.rowid=".$search_ref; +if ($search_ref) $sql.=" AND cs.rowid=".$db->escape($search_ref); if ($search_label) $sql.=natural_search("cs.libelle", $search_label); if ($search_amount) $sql.=natural_search("cs.amount", price2num(trim($search_amount)), 1); +if ($search_status != '' && $search_status >= 0) $sql.=" AND cs.paye = ".$db->escape($search_status); if ($year > 0) { $sql .= " AND ("; @@ -118,7 +120,7 @@ if ($filtre) { $sql .= " AND ".$filtre; } if ($typeid) { - $sql .= " AND cs.fk_type=".$typeid; + $sql .= " AND cs.fk_type=".$db->escape($typeid); } $sql.= " GROUP BY cs.rowid, cs.fk_type, cs.amount, cs.date_ech, cs.libelle, cs.paye, cs.periode, c.libelle"; $sql.= $db->order($sortfield,$sortorder); @@ -204,7 +206,10 @@ if ($resql) print '</td>'; print '<td class="liste_titre"> </td>'; // Status - print '<td class="liste_titre"> </td>'; + print '<td class="liste_titre maxwidthonsmartphone" align="right">'; + $liststatus=array('0'=>$langs->trans("Unpaid"), '1'=>$langs->trans("Paid")); + print $form->selectarray('search_status', $liststatus, $search_status, 1); + print '</td>'; print '<td class="liste_titre" align="right">'; $searchpitco=$form->showFilterAndCheckAddButtons(0); diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example index aab5290a6635e4f7682187f4e46d31cb00bce6fc..83dbd300f6061865e5e1b0bd83b36610027894cf 100644 --- a/htdocs/conf/conf.php.example +++ b/htdocs/conf/conf.php.example @@ -134,7 +134,7 @@ $dolibarr_main_db_type=''; // dolibarr_main_db_character_set -// Database character set used to store data (forced during database creation). +// Database character set used to store data (forced during database creation. value of database is then used). // Default value: depends on database driver // Examples: // dolibarr_main_db_character_set='utf8'; @@ -143,12 +143,12 @@ $dolibarr_main_db_character_set='utf8'; // dolibarr_main_db_collation -// Database character set used to sort data (forced during database creation). +// Database character set used to sort data (forced during database creation. value of database is then used). // Default value: depends on database driver // Examples: -// dolibarr_main_db_collation='utf8_general_ci'; +// dolibarr_main_db_collation='utf8_unicode_ci'; // -$dolibarr_main_db_collation='utf8_general_ci'; +$dolibarr_main_db_collation='utf8_unicode_ci'; diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 4e045ccd449f0ed8a899359ce359d40f0905effb..cd45378ba866349c400080595881eb5661b9d256 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -123,15 +123,16 @@ class Contact extends CommonObject $sql = "SELECT count(sp.rowid) as nb"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as sp"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON (sp.fk_soc = s.rowid)"; if (!$user->rights->societe->client->voir && !$user->societe_id) { - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc"; + $sql.= " OUTER JOIN ".MAIN_DB_PREFIX."societe as s ON sp.fk_soc = s.rowid"; + $sql.= " OUTER JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc"; $sql.= " WHERE sc.fk_user = " .$user->id; $clause = "AND"; } - $sql.= ' '.$clause.' s.entity IN ('.getEntity($this->element, 1).')'; - + $sql.= ' '.$clause.' sp.entity IN ('.getEntity($this->element, 1).')'; + if ($user->societe_id > 0) $sql.=" AND sp.fk_soc = ".$user->societe_id; + $resql=$this->db->query($sql); if ($resql) { diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 86e45ade086d22792b49a1470f0f7355c12a8596..3c29f4e8fca9211e51a6d0f9ca838df71cf21c67 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -494,7 +494,7 @@ if (empty($reshook)) $pu_ht = price($prodcustprice->lines [0]->price); $pu_ttc = price($prodcustprice->lines [0]->price_ttc); $price_base_type = $prodcustprice->lines [0]->price_base_type; - $prod->tva_tx = $prodcustprice->lines [0]->tva_tx; + $tva_tx = $prodcustprice->lines [0]->tva_tx; } } } diff --git a/htdocs/contrat/services.php b/htdocs/contrat/services.php index 8e37e39260325cd330fd3a9cf4f5cf762b0460a9..836e2fd82f6fbc02a9197ab84f1eceb31e124cf2 100644 --- a/htdocs/contrat/services.php +++ b/htdocs/contrat/services.php @@ -50,6 +50,7 @@ $search_contract=GETPOST("search_contract"); $search_service=GETPOST("search_service"); $search_status=GETPOST("search_status","alpha"); $statut=GETPOST('statut')?GETPOST('statut'):1; +$search_product_category=GETPOST('search_product_category','int'); $socid=GETPOST('socid','int'); $opouvertureprevuemonth=GETPOST('opouvertureprevuemonth'); @@ -99,6 +100,9 @@ $staticcontrat=new Contrat($db); $staticcontratligne=new ContratLigne($db); $companystatic=new Societe($db); +$arrayfields=array(); + + /* * Actions */ @@ -153,8 +157,10 @@ $sql.= " ".MAIN_DB_PREFIX."societe as s,"; if (!$user->rights->societe->client->voir && !$socid) $sql .= " ".MAIN_DB_PREFIX."societe_commerciaux as sc,"; $sql.= " ".MAIN_DB_PREFIX."contratdet as cd"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid"; +if ($search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=cd.fk_product'; $sql.= " WHERE c.entity = ".$conf->entity; $sql.= " AND c.rowid = cd.fk_contrat"; +if ($search_product_category > 0) $sql.=" AND cp.fk_categorie = ".$search_product_category; $sql.= " AND c.fk_soc = s.rowid"; if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if ($mode == "0") $sql.= " AND cd.statut = 0"; @@ -206,17 +212,67 @@ if ($resql) if ($filter_date2 != '') $param.='&op2day='.$op2day.'&op2month='.$op2month.'&op2year='.$op2year; if ($filter_datecloture != '') $param.='&opclotureday='.$op2day.'&opcloturemonth='.$op2month.'&opclotureyear='.$op2year; + // List of mass actions available + $arrayofmassactions = array( + //'presend'=>$langs->trans("SendByMail"), + //'builddoc'=>$langs->trans("PDFMerge"), + ); + //if ($user->rights->contrat->supprimer) $arrayofmassactions['delete']=$langs->trans("Delete"); + //if ($massaction == 'presend') $arrayofmassactions=array(); + $massactionbutton=$form->selectMassAction('', $arrayofmassactions); + + print '<form method="POST" action="'. $_SERVER["PHP_SELF"] .'">'; + if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">'; + print '<input type="hidden" name="action" value="list">'; + print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; + print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; + $title=$langs->trans("ListOfServices"); if ($mode == "0") $title=$langs->trans("ListOfInactiveServices"); // Must use == "0" if ($mode == "4" && $filter != "expired") $title=$langs->trans("ListOfRunningServices"); if ($mode == "4" && $filter == "expired") $title=$langs->trans("ListOfExpiredServices"); if ($mode == "5") $title=$langs->trans("ListOfClosedServices"); - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder,'',$num,$totalnboflines,'title_commercial.png'); - - print '<form method="POST" action="'. $_SERVER["PHP_SELF"] .'">'; - print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<table class="liste" width="100%">'; + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $totalnboflines, 'title_commercial.png', 0, '', '', $limit); + if ($sall) + { + foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); + print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall); + } + + $morefilter = ''; + + // If the user can view categories of products + if ($conf->categorie->enabled && ($user->rights->produit->lire || $user->rights->service->lire)) + { + include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + $moreforfilter.='<div class="divsearchfield">'; + $moreforfilter.=$langs->trans('IncludingProductWithTag'). ': '; + $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1); + $moreforfilter.=$form->selectarray('search_product_category', $cate_arbo, $search_product_category, 1, 0, 0, '', 0, 0, 0, 0, '', 1); + $moreforfilter.='</div>'; + } + + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + if (empty($reshook)) $moreforfilter .= $hookmanager->resPrint; + else $moreforfilter = $hookmanager->resPrint; + + + if (! empty($moreforfilter)) + { + print '<div class="liste_titre liste_titre_bydiv centpercent">'; + print $moreforfilter; + print '</div>'; + } + + $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; + $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n"; + print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Contract"),$_SERVER["PHP_SELF"], "c.rowid",$param,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Service"),$_SERVER["PHP_SELF"], "p.description",$param,"","",$sortfield,$sortorder); @@ -308,11 +364,16 @@ if ($resql) while ($i < min($num,$limit)) { $obj = $db->fetch_object($resql); + + $contractstatic->id=$obj->cid; + $contractstatic->ref=$obj->ref?$obj->ref:$obj->cid; + $var=!$var; + print "<tr ".$bc[$var].">"; + + // Ref print '<td>'; - $contractstatic->id=$obj->cid; - $contractstatic->ref=$obj->ref?$obj->ref:$obj->cid; print $contractstatic->getNomUrl(1,16); print '</td>'; @@ -348,7 +409,7 @@ if ($resql) { print '<td align="center">'; print ($obj->date_ouverture_prevue?dol_print_date($db->jdate($obj->date_ouverture_prevue)):' '); - if ($db->jdate($obj->date_ouverture_prevue) && ($db->jdate($obj->date_ouverture_prevue) < ($now - $conf->contrat->services->inactifs->warning_delay))) + if ($db->jdate($obj->date_ouverture_prevue) && ($db->jdate($obj->date_ouverture_prevue) < ($now - $conf->contrat->services->inactifs->warning_delay)) && $obj->statut == 0) print ' '.img_picto($langs->trans("Late"),"warning"); else print ' '; print '</td>'; @@ -357,7 +418,7 @@ if ($resql) { print '<td align="center">'.($obj->date_ouverture?dol_print_date($db->jdate($obj->date_ouverture)):' ').'</td>'; } - // Date fin + // End date if (($mode == "" || $mode == -1) || $mode < 5) { print '<td align="center">'.($obj->date_fin_validite?dol_print_date($db->jdate($obj->date_fin_validite)):' '); diff --git a/htdocs/contrat/tpl/linkedobjectblock.tpl.php b/htdocs/contrat/tpl/linkedobjectblock.tpl.php index aa8d83bb803a666da1fb95b359c4872191d0f129..9ea21f890fc594a2cf5ec74dfb35b640277cb991 100644 --- a/htdocs/contrat/tpl/linkedobjectblock.tpl.php +++ b/htdocs/contrat/tpl/linkedobjectblock.tpl.php @@ -13,7 +13,6 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. - * */ ?> @@ -22,19 +21,23 @@ <?php global $user; +global $noMoreLinkedObjectBlockAfter; $langs = $GLOBALS['langs']; $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("contracts"); +$total=0; $ilink=0; $var=true; foreach($linkedObjectBlock as $key => $objectlink) { - $objectlink->fetch_lines(); - $var=!$var; + $ilink++; + $var=!$var; + $trclass=($var?'pair':'impair'); + if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; ?> -<tr <?php echo $bc[$var]; ?> > +<tr class="<?php echo $trclass; ?>"> <td><?php echo $langs->trans("Contract"); ?></td> <td><?php echo $objectlink->getNomUrl(1); ?></td> <td></td> diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 317b84e0b29fdbe7d99541526ff1cc5f39efb4bd..3abd7dd58b5d2bf4f013f9ba7549fb6c99683451 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -527,7 +527,7 @@ class CMailFile if (! empty($conf->global->MAIN_MAIL_DEBUG)) $this->dump_mail(); if (! empty($bounce)) $res = mail($dest,$this->encodetorfc2822($this->subject),$this->message,$this->headers, $bounce); - else $res = mail($dest,$this->encodetorfc2822($this->subject),$this->message,$this->headers); + else $res = mail($dest, $this->encodetorfc2822($this->subject), $this->message, $this->headers); if (! $res) { @@ -840,7 +840,7 @@ class CMailFile // Receiver if (isset($this->addr_cc) && $this->addr_cc) $out.= "Cc: ".$this->getValidAddress($this->addr_cc,2).$this->eol2; - if (isset($this->addr_bcc) && $this->addr_bcc) $out.= "Bcc: ".$this->getValidAddress($this->addr_bcc,2).$this->eol2; + if (isset($this->addr_bcc) && $this->addr_bcc) $out.= "Bcc: ".$this->getValidAddress($this->addr_bcc,2).$this->eol2; // Question: bcc must not be into header, only into SMTP command "RCPT TO". Does php mail support this ? // Delivery receipt if (isset($this->deliveryreceipt) && $this->deliveryreceipt == 1) $out.= "Disposition-Notification-To: ".$this->getValidAddress($this->addr_from,2).$this->eol2; diff --git a/htdocs/core/class/commoninvoice.class.php b/htdocs/core/class/commoninvoice.class.php index b3b0cc4042b94b8810ce73579616a525f5806d15..30ea6639196e65771949e7a744362cf8a50d9f7e 100644 --- a/htdocs/core/class/commoninvoice.class.php +++ b/htdocs/core/class/commoninvoice.class.php @@ -337,17 +337,17 @@ abstract class CommonInvoice extends CommonObject $prefix='Short'; if (! $paye) { - if ($status == 0) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusDraft').' </span>'.img_picto($langs->trans('BillStatusDraft'),'statut0'); - if (($status == 3 || $status == 2) && $alreadypaid <= 0) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusCanceled').' </span>'.img_picto($langs->trans('BillStatusCanceled'),'statut5'); - if (($status == 3 || $status == 2) && $alreadypaid > 0) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusClosedPaidPartially').' </span>'.img_picto($langs->trans('BillStatusClosedPaidPartially'),'statut7'); - if ($alreadypaid <= 0) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusNotPaid').' </span>'.img_picto($langs->trans('BillStatusNotPaid'),'statut1'); - return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusStarted').' </span>'.img_picto($langs->trans('BillStatusStarted'),'statut3'); + if ($status == 0) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusDraft').' </span>'.img_picto($langs->trans('BillStatusDraft'),'statut0'); + if (($status == 3 || $status == 2) && $alreadypaid <= 0) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusCanceled').' </span>'.img_picto($langs->trans('BillStatusCanceled'),'statut5'); + if (($status == 3 || $status == 2) && $alreadypaid > 0) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusClosedPaidPartially').' </span>'.img_picto($langs->trans('BillStatusClosedPaidPartially'),'statut7'); + if ($alreadypaid <= 0) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusNotPaid').' </span>'.img_picto($langs->trans('BillStatusNotPaid'),'statut1'); + return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusStarted').' </span>'.img_picto($langs->trans('BillStatusStarted'),'statut3'); } else { - if ($type == 2) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusPaidBackOrConverted').' </span>'.img_picto($langs->trans('BillStatusPaidBackOrConverted'),'statut6'); - elseif ($type == 3) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusConverted').' </span>'.img_picto($langs->trans('BillStatusConverted'),'statut6'); - else return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusPaid').' </span>'.img_picto($langs->trans('BillStatusPaid'),'statut6'); + if ($type == 2) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusPaidBackOrConverted').' </span>'.img_picto($langs->trans('BillStatusPaidBackOrConverted'),'statut6'); + elseif ($type == 3) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusConverted').' </span>'.img_picto($langs->trans('BillStatusConverted'),'statut6'); + else return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusPaid').' </span>'.img_picto($langs->trans('BillStatusPaid'),'statut6'); } } } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index cdd8b89a1adfac28e9e84d08c8f779b0b60afed8..e3e899eceba066d1f6230497aaf9759379b708cb 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -3280,7 +3280,7 @@ abstract class CommonObject { global $conf, $hookmanager, $langs, $user; // TODO We should not use global var for this ! - global $inputalsopricewithtax, $usemargins, $disableedit, $disablemove, $disableremove; + global $inputalsopricewithtax, $usemargins, $disableedit, $disablemove, $disableremove, $outputalsopricetotalwithtax; // Define usemargins $usemargins=0; @@ -3343,6 +3343,8 @@ abstract class CommonObject // Multicurrency if (!empty($conf->multicurrency->enabled)) print '<td class="linecoltotalht_currency" align="right">'.$langs->trans('TotalHTShortCurrency').'</td>'; + if ($outputalsopricetotalwithtax) print '<td align="right" width="80">'.$langs->trans('TotalTTCShort').'</td>'; + print '<td class="linecoledit"></td>'; // No width to allow autodim print '<td class="linecoldelete" width="10"></td>'; @@ -4444,12 +4446,12 @@ abstract class CommonObject } if ( !empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && ($e % 2) == 0) { - $out .= '<tr '.$class.$csstyle.'>'; + $out .= '<tr '.$class.$csstyle.' class="'.$this->element.'_extras_'.$key.'">'; $colspan='0'; } else { - $out .= '<tr '.$class.$csstyle.'>'; + $out .= '<tr '.$class.$csstyle.' class="'.$this->element.'_extras_'.$key.'">'; } // Convert date into timestamp format if (in_array($extrafields->attribute_type[$key],array('date','datetime'))) diff --git a/htdocs/core/class/doleditor.class.php b/htdocs/core/class/doleditor.class.php index ef750e70253fa8057d9d6b722273f4b8e116aefa..90e4970b9d6954744b5fb22b04e9944ba81a3fa3 100644 --- a/htdocs/core/class/doleditor.class.php +++ b/htdocs/core/class/doleditor.class.php @@ -108,7 +108,7 @@ class DolEditor // Dolibarr utilise toujours liens avec modulepart='fckeditor' quelque soit modulepart. // Ou se trouve donc cette valeur /viewimage.php?modulepart=fckeditor&file=' ? $modulepart='fckeditor'; - $this->editor->Config['UserFilesPath'] = '/viewimage.php?modulepart='.$modulepart.'&file='; + $this->editor->Config['UserFilesPath'] = '/viewimage.php?modulepart='.$modulepart.'&entity='.$conf->entity.'&file='; $this->editor->Config['UserFilesAbsolutePath'] = DOL_DATA_ROOT.'/'.$modulepart.'/' ; $this->editor->Config['LinkBrowser']=($uselocalbrowser?'true':'false'); diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 9bed1ed9a828a346a006bba400e195fb201b994f..8479bab7563267a84cc40b6c77a4d49bf4347f1a 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -76,14 +76,15 @@ class ExtraFields 'price'=>'ExtrafieldPrice', 'phone'=>'ExtrafieldPhone', 'mail'=>'ExtrafieldMail', + 'url'=>'ExtrafieldUrl', 'select' => 'ExtrafieldSelect', 'sellist' => 'ExtrafieldSelectList', 'radio' => 'ExtrafieldRadio', 'checkbox' => 'ExtrafieldCheckBox', 'chkbxlst' => 'ExtrafieldCheckBoxFromList', 'link' => 'ExtrafieldLink', - 'separate' => 'ExtrafieldSeparator', 'password' => 'ExtrafieldPassword', + 'separate' => 'ExtrafieldSeparator', ); /** @@ -195,6 +196,9 @@ class ExtraFields } elseif($type=='mail') { $typedb='varchar'; $lengthdb='128'; + } elseif($type=='url') { + $typedb='varchar'; + $lengthdb='255'; } elseif (($type=='select') || ($type=='sellist') || ($type=='radio') ||($type=='checkbox') ||($type=='chkbxlst')){ $typedb='text'; $lengthdb=''; @@ -425,6 +429,9 @@ class ExtraFields } elseif($type=='mail') { $typedb='varchar'; $lengthdb='128'; + } elseif($type=='url') { + $typedb='varchar'; + $lengthdb='255'; } elseif (($type=='select') || ($type=='sellist') || ($type=='radio') || ($type=='checkbox') || ($type=='chkbxlst')) { $typedb='text'; $lengthdb=''; @@ -693,6 +700,10 @@ class ExtraFields //$showsize=10; $showsize = 'minwidth100imp'; } + elseif ($type == 'url') + { + $showsize='minwidth400imp'; + } else { if (round($size) < 12) @@ -738,6 +749,10 @@ class ExtraFields { $out='<input type="text" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" maxlength="'.$size.'" value="'.$value.'"'.($moreparam?$moreparam:'').'>'; } + elseif (in_array($type, array('mail', 'phone', 'url'))) + { + $out='<input type="text" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" value="'.$value.'" '.($moreparam?$moreparam:'').'>'; + } elseif ($type == 'text') { require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; @@ -754,14 +769,6 @@ class ExtraFields } $out='<input type="checkbox" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" '.$checked.' '.($moreparam?$moreparam:'').'>'; } - elseif ($type == 'mail') - { - $out='<input type="text" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" value="'.$value.'" '.($moreparam?$moreparam:'').'>'; - } - elseif ($type == 'phone') - { - $out='<input type="text" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" value="'.$value.'" '.($moreparam?$moreparam:'').'>'; - } elseif ($type == 'price') { $out='<input type="text" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" value="'.price($value).'" '.($moreparam?$moreparam:'').'> '.$langs->getCurrencySymbol($conf->currency); @@ -1236,11 +1243,15 @@ class ExtraFields } elseif ($type == 'mail') { - $value=dol_print_email($value); + $value=dol_print_email($value,0,0,0,64,1,1); + } + elseif ($type == 'url') + { + $value=dol_print_url($value,'_blank',32,1); } elseif ($type == 'phone') { - $value=dol_print_phone($value); + $value=dol_print_phone($value, '', 0, 0, '', ' ', 1); } elseif ($type == 'price') { diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 48126c9afede442217a8f447f5305f98b417142a..2b18dab3acdffbdf4299916b66c54a8d2ede11ff 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -181,7 +181,14 @@ class Form else if (preg_match('/^text/',$typeofdata) || preg_match('/^note/',$typeofdata)) { $tmp=explode(':',$typeofdata); - $ret.='<textarea id="'.$htmlname.'" name="'.$htmlname.'" wrap="soft" rows="'.($tmp[1]?$tmp[1]:'20').'" cols="'.($tmp[2]?$tmp[2]:'100').'">'.($editvalue?$editvalue:$value).'</textarea>'; + $cols=$tmp[2]; + $morealt=''; + if (preg_match('/%/',$cols)) + { + $morealt=' style="width: '.$cols.'"'; + $cols=''; + } + $ret.='<textarea id="'.$htmlname.'" name="'.$htmlname.'" wrap="soft" rows="'.($tmp[1]?$tmp[1]:'20').'"'.($cols?' cols="'.$cols.'"':'').$morealt.'">'.($editvalue?$editvalue:$value).'</textarea>'; } else if ($typeofdata == 'day' || $typeofdata == 'datepicker') { @@ -211,9 +218,10 @@ class Form if (empty($notabletag)) $ret.='</td>'; if (empty($notabletag)) $ret.='<td align="left">'; - $ret.='<input type="submit" class="button" name="modify" value="'.$langs->trans("Modify").'">'; - if (preg_match('/ckeditor|textarea/',$typeofdata)) $ret.='<br>'."\n"; - $ret.='<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">'; + else $ret.='<div class="clearboth"></div>'; + $ret.='<input type="submit" class="button'.(empty($notabletag)?'':' marginrightonly').'" name="modify" value="'.$langs->trans("Modify").'">'; + if (preg_match('/ckeditor|textarea/',$typeofdata) && empty($notabletag)) $ret.='<br>'."\n"; + $ret.='<input type="submit" class="button'.(empty($notabletag)?'':' marginrightonly').'" name="cancel" value="'.$langs->trans("Cancel").'">'; if (empty($notabletag)) $ret.='</td>'; if (empty($notabletag)) $ret.='</tr></table>'."\n"; @@ -734,7 +742,7 @@ class Form } $out.= '</select>'; - $out .= '<input id="location_incoterms" name="location_incoterms" size="14" value="'.$location_incoterms.'">'; + $out .= '<input id="location_incoterms" class="maxwidth100onsmartphone" name="location_incoterms" value="'.$location_incoterms.'">'; if (!empty($page)) { @@ -3910,15 +3918,16 @@ class Form * * @param string $page Page URL where form is shown * @param int $selected Value pre-selected - * @param string $htmlname Nom du formulaire select. Si 'none', non modifiable. Example 'remise_id'. + * @param string $htmlname Name of SELECT component. If 'none', not changeable. Example 'remise_id'. * @param int $socid Third party id * @param float $amount Total amount available * @param string $filter SQL filter on discounts * @param int $maxvalue Max value for lines that can be selected * @param string $more More string to add + * @param int $hidelist 1=Hide list * @return void */ - function form_remise_dispo($page, $selected, $htmlname, $socid, $amount, $filter='', $maxvalue=0, $more='') + function form_remise_dispo($page, $selected, $htmlname, $socid, $amount, $filter='', $maxvalue=0, $more='', $hidelist=0) { global $conf,$langs; if ($htmlname != "none") @@ -3929,25 +3938,30 @@ class Form print '<div class="inline-block">'; if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { - if (! $filter || $filter=="fk_facture_source IS NULL") print $langs->trans("CompanyHasAbsoluteDiscount",price($amount,0,$langs,0,0,-1,$conf->currency)).': '; // If we want deposit to be substracted to payments only and not to total of final invoice - else print $langs->trans("CompanyHasCreditNote",price($amount,0,$langs,0,0,-1,$conf->currency)).': '; + if (! $filter || $filter=="fk_facture_source IS NULL") print $langs->trans("CompanyHasAbsoluteDiscount",price($amount,0,$langs,0,0,-1,$conf->currency)); // If we want deposit to be substracted to payments only and not to total of final invoice + else print $langs->trans("CompanyHasCreditNote",price($amount,0,$langs,0,0,-1,$conf->currency)); } else { - if (! $filter || $filter=="fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description LIKE '(DEPOSIT)%')") print $langs->trans("CompanyHasAbsoluteDiscount",price($amount,0,$langs,0,0,-1,$conf->currency)).': '; - else print $langs->trans("CompanyHasCreditNote",price($amount,0,$langs,0,0,-1,$conf->currency)).': '; + if (! $filter || $filter=="fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description LIKE '(DEPOSIT)%')") print $langs->trans("CompanyHasAbsoluteDiscount",price($amount,0,$langs,0,0,-1,$conf->currency)); + else print $langs->trans("CompanyHasCreditNote",price($amount,0,$langs,0,0,-1,$conf->currency)); } - print '</div><div class="inline-block" style="padding-right: 10px">'; - $newfilter='fk_facture IS NULL AND fk_facture_line IS NULL'; // Remises disponibles - if ($filter) $newfilter.=' AND ('.$filter.')'; - $nbqualifiedlines=$this->select_remises($selected,$htmlname,$newfilter,$socid,$maxvalue); - if ($nbqualifiedlines > 0) + if (empty($hidelist)) print ': '; + print '</div>'; + if (empty($hidelist)) { - print ' <input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("UseLine")).'"'; - if ($filter && $filter != "fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description LIKE '(DEPOSIT)%')") print ' title="'.$langs->trans("UseCreditNoteInInvoicePayment").'"'; - print '>'; + print '<div class="inline-block" style="padding-right: 10px">'; + $newfilter='fk_facture IS NULL AND fk_facture_line IS NULL'; // Remises disponibles + if ($filter) $newfilter.=' AND ('.$filter.')'; + $nbqualifiedlines=$this->select_remises($selected,$htmlname,$newfilter,$socid,$maxvalue); + if ($nbqualifiedlines > 0) + { + print ' <input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("UseLine")).'"'; + if ($filter && $filter != "fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description LIKE '(DEPOSIT)%')") print ' title="'.$langs->trans("UseCreditNoteInInvoicePayment").'"'; + print '>'; + } + print '</div>'; } - print '</div>'; if ($more) { print '<div class="inline-block">'; @@ -4479,7 +4493,7 @@ class Form if ($usecalendar == "eldy") { // Zone de saisie manuelle de la date - $retstring.='<input id="'.$prefix.'" name="'.$prefix.'" type="text" size="9" maxlength="11" value="'.$formated_date.'"'; + $retstring.='<input id="'.$prefix.'" name="'.$prefix.'" type="text" class"minwidth100" maxlength="11" value="'.$formated_date.'"'; $retstring.=($disabled?' disabled':''); $retstring.=' onChange="dpChangeDay(\''.$prefix.'\',\''.$langs->trans("FormatDateShortJavaInput").'\'); "'; // FormatDateShortInput for dol_print_date / FormatDateShortJavaInput that is same for javascript $retstring.='>'; @@ -4507,7 +4521,7 @@ class Form { //$retstring.='<div class="inline-block">'; // Day - $retstring.='<select'.($disabled?' disabled':'').' class="flat" id="'.$prefix.'day" name="'.$prefix.'day">'; + $retstring.='<select'.($disabled?' disabled':'').' class="flat valignmiddle maxwidth50imp" id="'.$prefix.'day" name="'.$prefix.'day">'; if ($emptydate || $set_time == -1) { @@ -4521,7 +4535,7 @@ class Form $retstring.="</select>"; - $retstring.='<select'.($disabled?' disabled':'').' class="flat" id="'.$prefix.'month" name="'.$prefix.'month">'; + $retstring.='<select'.($disabled?' disabled':'').' class="flat valignmiddle maxwidth50onsmartphone" id="'.$prefix.'month" name="'.$prefix.'month">'; if ($emptydate || $set_time == -1) { $retstring.='<option value="0" selected> </option>'; @@ -4539,11 +4553,11 @@ class Form // Year if ($emptydate || $set_time == -1) { - $retstring.='<input'.($disabled?' disabled':'').' placeholder="'.dol_escape_htmltag($langs->trans("Year")).'" class="flat" type="text" size="3" maxlength="4" id="'.$prefix.'year" name="'.$prefix.'year" value="'.$syear.'">'; + $retstring.='<input'.($disabled?' disabled':'').' placeholder="'.dol_escape_htmltag($langs->trans("Year")).'" class="flat maxwidth50imp" type="text" maxlength="4" id="'.$prefix.'year" name="'.$prefix.'year" value="'.$syear.'">'; } else { - $retstring.='<select'.($disabled?' disabled':'').' class="flat" id="'.$prefix.'year" name="'.$prefix.'year">'; + $retstring.='<select'.($disabled?' disabled':'').' class="flat valignmiddle maxwidth75" id="'.$prefix.'year" name="'.$prefix.'year">'; for ($year = $syear - 5; $year < $syear + 10 ; $year++) { @@ -4560,7 +4574,7 @@ class Form if ($h) { // Show hour - $retstring.='<select'.($disabled?' disabled':'').' class="flat '.($fullday?$fullday.'hour':'').'" id="'.$prefix.'hour" name="'.$prefix.'hour">'; + $retstring.='<select'.($disabled?' disabled':'').' class="flat valignmiddle maxwidth50 '.($fullday?$fullday.'hour':'').'" id="'.$prefix.'hour" name="'.$prefix.'hour">'; if ($emptyhours) $retstring.='<option value="-1"> </option>'; for ($hour = 0; $hour < 24; $hour++) { @@ -4574,7 +4588,7 @@ class Form if ($m) { // Show minutes - $retstring.='<select'.($disabled?' disabled':'').' class="flat '.($fullday?$fullday.'min':'').'" id="'.$prefix.'min" name="'.$prefix.'min">'; + $retstring.='<select'.($disabled?' disabled':'').' class="flat valignmiddle maxwidth50 '.($fullday?$fullday.'min':'').'" id="'.$prefix.'min" name="'.$prefix.'min">'; if ($emptyhours) $retstring.='<option value="-1"> </option>'; for ($min = 0; $min < 60 ; $min++) { @@ -5209,7 +5223,7 @@ class Form if (empty($reshook)) { - $num = count($object->linkedObjects); + $nbofdifferenttypes = count($object->linkedObjects); print '<br>'; print load_fiche_titre($langs->trans('RelatedObjects'), $morehtmlright, ''); @@ -5226,7 +5240,7 @@ class Form print '<td></td>'; print '</tr>'; - $numoutput=0; + $nboftypesoutput=0; foreach($object->linkedObjects as $objecttype => $objects) { @@ -5286,23 +5300,28 @@ class Form $dirtpls=array_merge($conf->modules_parts['tpl'],array('/'.$tplpath.'/tpl')); foreach($dirtpls as $reldir) { + if ($nboftypesoutput == ($nbofdifferenttypes - 1)) // No more type to show after + { + global $noMoreLinkedObjectBlockAfter; + $noMoreLinkedObjectBlockAfter=1; + } $res=@include dol_buildpath($reldir.'/'.$tplname.'.tpl.php'); if ($res) { - $numoutput++; + $nboftypesoutput++; break; } } } - if (! $numoutput) + if (! $nboftypesoutput) { print '<tr><td class="opacitymedium" colspan="7">'.$langs->trans("None").'</td></tr>'; } print '</table>'; - return $num; + return $nbofdifferenttypes; } } @@ -5555,36 +5574,13 @@ class Form //$previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Previous"),'previous.png'):' ').'</a>':''; //$next_ref = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Next"),'next.png'):' ').'</a>':''; - $previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(empty($conf->dol_use_jmobile)?'<':' ').'</a>':'<span class="inactive">'.(empty($conf->dol_use_jmobile)?'<':' ').'</span>'; - $next_ref = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(empty($conf->dol_use_jmobile)?'>':' ').'</a>':'<span class="inactive">'.(empty($conf->dol_use_jmobile)?'>':' ').'</span>'; + $previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(($conf->dol_use_jmobile != 4)?'<':' ').'</a>':'<span class="inactive">'.(($conf->dol_use_jmobile != 4)?'<':' ').'</span>'; + $next_ref = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(($conf->dol_use_jmobile != 4)?'>':' ').'</a>':'<span class="inactive">'.(($conf->dol_use_jmobile != 4)?'>':' ').'</span>'; //print "xx".$previous_ref."x".$next_ref; - $ret.='<div style="vertical-align: middle">'; - - if ($morehtmlleft) - { - if ($conf->browser->layout == 'phone') $ret.='<div class="center">'.$morehtmlleft.'</div>'; - else $ret.='<div class="inline-block floatleft">'.$morehtmlleft.'</div>'; - } - - $ret.='<div class="inline-block floatleft valignmiddle refid'.(($shownav && ($previous_ref || $next_ref))?' refidpadding':'').'">'; - - // For thirdparty, contact, user, member, the ref is the id, so we show something else - if ($object->element == 'societe') - { - $ret.=dol_htmlentities($object->name); - } - else if (in_array($object->element, array('contact', 'user', 'member'))) - { - $ret.=dol_htmlentities($object->getFullName($langs)); - } - else if ($fieldref != 'none') $ret.=dol_htmlentities($object->$fieldref); - if ($morehtmlref) - { - $ret.=' '.$morehtmlref; - } - $ret.='</div>'; + $ret.='<!-- Start banner content --><div style="vertical-align: middle">'; + // Right part of banner if ($morehtmlright) $ret.='<div class="inline-block floatleft">'.$morehtmlright.'</div>'; if ($previous_ref || $next_ref || $morehtml) @@ -5605,7 +5601,34 @@ class Form $ret.='</ul></div>'; } if ($morehtmlstatus) $ret.='<div class="statusref">'.$morehtmlstatus.'</div>'; - $ret.='</div>'; + + // Left part of banner + if ($morehtmlleft) + { + if ($conf->browser->layout == 'phone') $ret.='<div class="floatleft">'.$morehtmlleft.'</div>'; // class="center" to have photo in middle + else $ret.='<div class="inline-block floatleft">'.$morehtmlleft.'</div>'; + } + + //if ($conf->browser->layout == 'phone') $ret.='<div class="clearboth"></div>'; + $ret.='<div class="inline-block floatleft valignmiddle refid'.(($shownav && ($previous_ref || $next_ref))?' refidpadding':'').'">'; + + // For thirdparty, contact, user, member, the ref is the id, so we show something else + if ($object->element == 'societe') + { + $ret.=dol_htmlentities($object->name); + } + else if (in_array($object->element, array('contact', 'user', 'member'))) + { + $ret.=dol_htmlentities($object->getFullName($langs)); + } + else if ($fieldref != 'none') $ret.=dol_htmlentities($object->$fieldref); + if ($morehtmlref) + { + $ret.=' '.$morehtmlref; + } + $ret.='</div>'; + + $ret.='</div><!-- End banner content -->'; return $ret; } @@ -5779,10 +5802,10 @@ class Form if ($caneditfield) { if ($object->photo) $ret.="<br>\n"; - $ret.='<table class="nobordernopadding">'; - if ($object->photo) $ret.='<tr><td align="center"><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>'; + $ret.='<table class="nobordernopadding centpercent">'; + if ($object->photo) $ret.='<tr><td><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>'; $ret.='<tr><td>'.$langs->trans("PhotoFile").'</td></tr>'; - $ret.='<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>'; + $ret.='<tr><td class="tdoverflow"><input type="file" class="flat maxwidth200onsmartphone" name="photo" id="photoinput"></td></tr>'; $ret.='</table>'; } diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index 503c1fbb739c52fa3adc55f6d33f6cf6e4b2de2a..16b63c16601c4e753eec7af2d1531d125c3e3885 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -180,7 +180,10 @@ class FormActions elseif ($typeelement == 'fichinter') $title=$langs->trans('ActionsOnFicheInter'); else $title=$langs->trans("Actions"); - print load_fiche_titre($title,'',''); + $buttontoaddnewevent = '<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create&datep='.dol_print_date(dol_now(),'dayhourlog').'&origin='.$typeelement.'&originid='.$object->id.'&socid='.$object->socid.'&projectid='.$object->fk_project.'&backtopage='.urlencode($_SERVER['PHP_SELF'].'?id='.$object->id).'">'; + $buttontoaddnewevent.= $langs->trans("AddEvent"); + $buttontoaddnewevent.= '</a>'; + print load_fiche_titre($title, $buttontoaddnewevent, ''); $page=0; $param=''; $sortfield='a.datep'; @@ -250,13 +253,13 @@ class FormActions * @param array|string $selected Type pre-selected (can be 'manual', 'auto' or 'AC_xxx'). Can be an array too. * @param string $htmlname Name of select field * @param string $excludetype A type to exclude ('systemauto', 'system', '') - * @param integer $onlyautoornot 1=Group all type AC_XXX into 1 line AC_MANUAL. 0=Keep details of type + * @param integer $onlyautoornot 1=Group all type AC_XXX into 1 line AC_MANUAL. 0=Keep details of type, -1=Keep details and add a combined line "All manual" * @param int $hideinfohelp 1=Do not show info help, 0=Show, -1=Show+Add info to tell how to set default value * @param int $multiselect 1=Allow multiselect of action type * @param int $nooutput 1=No output * @return string */ - function select_type_actions($selected='',$htmlname='actioncode',$excludetype='',$onlyautoornot=0, $hideinfohelp=0, $multiselect=0, $nooutput=0) + function select_type_actions($selected='', $htmlname='actioncode', $excludetype='', $onlyautoornot=0, $hideinfohelp=0, $multiselect=0, $nooutput=0) { global $langs,$user,$form,$conf; diff --git a/htdocs/core/class/html.formcompany.class.php b/htdocs/core/class/html.formcompany.class.php index ef9141dbc94b7f9ac5c6d0fe0bd77cda1c51953c..ac800d480fc6cb0aceedc6cf7ebf010aa8fe90cf 100644 --- a/htdocs/core/class/html.formcompany.class.php +++ b/htdocs/core/class/html.formcompany.class.php @@ -358,9 +358,10 @@ class FormCompany * * @param string $selected Title preselected * @param string $htmlname Name of HTML select combo field + * @param string $morecss Add more css on SELECT element * @return string String with HTML select */ - function select_civility($selected='',$htmlname='civility_id') + function select_civility($selected='',$htmlname='civility_id',$morecss='maxwidth100') { global $conf,$langs,$user; $langs->load("dict"); @@ -374,7 +375,7 @@ class FormCompany $resql=$this->db->query($sql); if ($resql) { - $out.= '<select class="flat" name="'.$htmlname.'" id="'.$htmlname.'">'; + $out.= '<select class="flat'.($morecss?' '.$morecss:'').'" name="'.$htmlname.'" id="'.$htmlname.'">'; $out.= '<option value=""> </option>'; $num = $this->db->num_rows($resql); $i = 0; @@ -724,9 +725,10 @@ class FormCompany * @param int $fieldsize Field size * @param int $disableautocomplete 1 To disable ajax autocomplete features (browser autocomplete may still occurs) * @param string $moreattrib Add more attribute on HTML input field + * @param string $morecss More css * @return string */ - function select_ziptown($selected='', $htmlname='zipcode', $fields='', $fieldsize=0, $disableautocomplete=0, $moreattrib='') + function select_ziptown($selected='', $htmlname='zipcode', $fields='', $fieldsize=0, $disableautocomplete=0, $moreattrib='',$morecss='') { global $conf; @@ -740,7 +742,7 @@ class FormCompany $out.= ajax_multiautocompleter($htmlname,$fields,DOL_URL_ROOT.'/core/ajax/ziptown.php')."\n"; $moreattrib.=' autocomplete="off"'; } - $out.= '<input id="'.$htmlname.'" class="maxwidthonsmartphone" type="text"'.($moreattrib?' '.$moreattrib:'').' name="'.$htmlname.'" '.$size.' value="'.$selected.'">'."\n"; + $out.= '<input id="'.$htmlname.'" class="maxwidthonsmartphone'.($morecss?' '.$morecss:'').'" type="text"'.($moreattrib?' '.$moreattrib:'').' name="'.$htmlname.'" '.$size.' value="'.$selected.'">'."\n"; return $out; } diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 109d2c5d23d54b1d02239ae5be570c49fe6f3692..d79eaae65f08842741d7a43b00822711a62090dc 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -62,7 +62,7 @@ class FormFile * @param int $addcancel 1=Add 'Cancel' button * @param int $sectionid If upload must be done inside a particular ECM section * @param int $perm Value of permission to allow upload - * @param int $size Length of input file area + * @param int $size Length of input file area. Deprecated. * @param Object $object Object to use (when attachment is done on an element) * @param string $options Add an option column * @param integer $useajax Use fileupload ajax (0=never, 1=if enabled, 2=always whatever is option). 2 should never be used. @@ -106,7 +106,7 @@ class FormFile if (! empty($options)) $out .= '<td>'.$options.'</td>'; - $out .= '<td valign="middle" class="nowrap">'; + $out .= '<td valign="middle">'; $max=$conf->global->MAIN_UPLOAD_DOC; // En Kb $maxphp=@ini_get('upload_max_filesize'); // En inconnu @@ -121,10 +121,10 @@ class FormFile { $out .= '<input type="hidden" name="max_file_size" value="'.($max*1024).'">'; } - $out .= '<input class="flat" type="file" name="userfile" size="'.$maxlength.'"'; + $out .= '<input class="flat minwidth400" type="file" name="userfile"'; $out .= (empty($conf->global->MAIN_UPLOAD_DOC) || empty($perm)?' disabled':''); $out .= '>'; - $out .= ' '; + $out .= ' '; $out .= '<input type="submit" class="button" name="sendit" value="'.$langs->trans("Upload").'"'; $out .= (empty($conf->global->MAIN_UPLOAD_DOC) || empty($perm)?' disabled':''); $out .= '>'; @@ -183,11 +183,11 @@ class FormFile $out .= '<div class="valignmiddle" >'; $out .= '<div class="inline-block" style="padding-right: 10px;">'; if (! empty($conf->global->OPTIMIZEFORTEXTBROWSER)) $out .= '<label for="link">'.$langs->trans("URLToLink") . ':</label> '; - $out .= '<input type="text" name="link" size="'.$maxlength.'" id="link" placeholder="'.dol_escape_htmltag($langs->trans("URLToLink")).'">'; + $out .= '<input type="text" name="link" class="flat minwidth400imp" id="link" placeholder="'.dol_escape_htmltag($langs->trans("URLToLink")).'">'; $out .= '</div>'; $out .= '<div class="inline-block" style="padding-right: 10px;">'; if (! empty($conf->global->OPTIMIZEFORTEXTBROWSER)) $out .= '<label for="label">'.$langs->trans("Label") . ':</label> '; - $out .= '<input type="text" name="label" id="label" placeholder="'.dol_escape_htmltag($langs->trans("Label")).'">'; + $out .= '<input type="text" class="flat" name="label" id="label" placeholder="'.dol_escape_htmltag($langs->trans("Label")).'">'; $out .= '<input type="hidden" name="objecttype" value="' . $object->element . '">'; $out .= '<input type="hidden" name="objectid" value="' . $object->id . '">'; $out .= '</div>'; @@ -776,6 +776,8 @@ class FormFile /** * Show a Document icon with link(s) + * You may want to call this into a div like this: + * print '<div class="inline-block valignmiddle">'.$formfile->getDocumentsLink($element_doc, $filename, $filedir).'</div>'; * * @param string $modulepart propal, facture, facture_fourn, ... * @param string $modulesubdir Sub-directory to scan (Example: '0/1/10', 'FA/DD/MM/YY/9999'). Use '' if file is not into subdir of module. @@ -1449,6 +1451,7 @@ class FormFile else { print '<td>'; + print img_picto('', 'object_globe').' '; print '<a data-ajax="false" href="' . $link->url . '" target="_blank">'; print $link->label; print '</a>'; diff --git a/htdocs/core/class/html.formpropal.class.php b/htdocs/core/class/html.formpropal.class.php index 57dd6336a4324361473378b823602d56e0da56a7..2cfeaadd3686e07dc9c51242ad6b668a2d7fddb5 100644 --- a/htdocs/core/class/html.formpropal.class.php +++ b/htdocs/core/class/html.formpropal.class.php @@ -50,9 +50,10 @@ class FormPropal * @param int $excludedraft 0=All status, 1=Exclude draft status * @param int $showempty 1=Add empty line * @param string $mode 'customer', 'supplier' + * @param string $htmlname Name of select field * @return void */ - function selectProposalStatus($selected='',$short=0, $excludedraft=0, $showempty=1, $mode='customer') + function selectProposalStatus($selected='',$short=0, $excludedraft=0, $showempty=1, $mode='customer',$htmlname='propal_statut') { global $langs; @@ -63,7 +64,13 @@ class FormPropal $prefix='SupplierProposalStatus'; $langs->load("supplier_proposal"); - $listofstatus=array(0=>array('code'=>'PR_DRAFT'), 1=>array('code'=>'PR_OPEN'), 2=>array('code'=>'PR_SIGNED'), 3=>array('code'=>'PR_NOTSIGNED'), 4=>array('code'=>'PR_CLOSED')); + $listofstatus=array( + 0=>array('id'=>0, 'code'=>'PR_DRAFT'), + 1=>array('id'=>1, 'code'=>'PR_OPEN'), + 2=>array('id'=>2, 'code'=>'PR_SIGNED'), + 3=>array('id'=>3, 'code'=>'PR_NOTSIGNED'), + 4=>array('id'=>4, 'code'=>'PR_CLOSED') + ); } else { @@ -93,7 +100,7 @@ class FormPropal } } - print '<select class="flat" name="propal_statut">'; + print '<select class="flat" name="'.$htmlname.'">'; if ($showempty) print '<option value=""> </option>'; foreach($listofstatus as $key => $obj) @@ -115,15 +122,16 @@ class FormPropal print '<option value="'.$obj['id'].'">'; } $key=$obj['code']; - if ($langs->trans($prefix."PropalStatus".$key.($short?'Short':'')) != $prefix."PropalStatus".$key.($short?'Short':'')) + if ($langs->trans($prefix.$key.($short?'Short':'')) != $prefix.$key.($short?'Short':'')) { - print $langs->trans($prefix."PropalStatus".$key.($short?'Short':'')); + print $langs->trans($prefix.$key.($short?'Short':'')); } else { - $conv_to_new_code=array('PR_DRAFT'=>'Draft','PR_OPEN'=>'Opened','PR_CLOSED'=>'Closed','PR_SIGNED'=>'Signed','PR_NOTSIGNED'=>'NotSigned','PR_FAC'=>'Billed'); + $conv_to_new_code=array('PR_DRAFT'=>'Draft','PR_OPEN'=>'Validated','PR_CLOSED'=>'Closed','PR_SIGNED'=>'Signed','PR_NOTSIGNED'=>'NotSigned','PR_FAC'=>'Billed'); if (! empty($conv_to_new_code[$obj['code']])) $key=$conv_to_new_code[$obj['code']]; - print ($langs->trans($prefix.$key.($short?'Short':''))!=$prefix.$key.($short?'Short':''))?$langs->trans($prefix.$key.($short?'Short':'')):$obj['label']; + + print ($langs->trans($prefix.$key.($short?'Short':''))!=$prefix.$key.($short?'Short':''))?$langs->trans($prefix.$key.($short?'Short':'')):($obj['label']?$obj['label']:$obj['code']); } print '</option>'; $i++; diff --git a/htdocs/core/class/html.formsupplier_proposal.class.php b/htdocs/core/class/html.formsupplier_proposal.class.php deleted file mode 100644 index ed8781731a072805e8e97cb7d20d88e64ff5b022..0000000000000000000000000000000000000000 --- a/htdocs/core/class/html.formsupplier_proposal.class.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php -/* Copyright (C) 2012 Laurent Destailleur <eldy@users.sourceforge.net> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * \file htdocs/core/class/html.formpropal.class.php - * \ingroup core - * \brief File of class with all html predefined components - */ - - -/** - * Class to manage generation of HTML components for proposal management - */ -class FormSupplierProposal -{ - var $db; - var $error; - - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - } - - /** - * Return combo list of differents status of a proposal - * Values are id of table c_propalst - * - * @param string $selected Preselected value - * @param int $short Use short labels - * @return void - */ - function selectSupplierProposalStatus($selected='',$short=0) - { - global $langs; - - $sql = "SELECT id, code, label, active FROM ".MAIN_DB_PREFIX."c_propalst"; - $sql .= " WHERE active = 1"; - - dol_syslog(get_class($this)."::selectSupplierProposalStatus", LOG_DEBUG); - $resql=$this->db->query($sql); - if ($resql) - { - print '<select class="flat" name="supplier_proposal_statut">'; - print '<option value=""> </option>'; - $num = $this->db->num_rows($resql); - $i = 0; - if ($num) - { - while ($i < $num) - { - $obj = $this->db->fetch_object($resql); - if ($selected == $obj->id) - { - print '<option value="'.$obj->id.'" selected>'; - } - else - { - print '<option value="'.$obj->id.'">'; - } - $key=$obj->code; - if ($langs->trans("PropalStatus".$key.($short?'Short':'')) != "PropalStatus".$key.($short?'Short':'')) - { - print $langs->trans("PropalStatus".$key.($short?'Short':'')); - } - else - { - $conv_to_new_code=array('PR_DRAFT'=>'Draft','PR_OPEN'=>'Opened','PR_CLOSED'=>'Closed','PR_SIGNED'=>'Signed','PR_NOTSIGNED'=>'NotSigned','PR_FAC'=>'Closed'); - if (! empty($conv_to_new_code[$obj->code])) $key=$conv_to_new_code[$obj->code]; - print ($langs->trans("PropalStatus".$key.($short?'Short':''))!="PropalStatus".$key.($short?'Short':''))?$langs->trans("PropalStatus".$key.($short?'Short':'')):$obj->label; - } - print '</option>'; - $i++; - } - } - print '</select>'; - } - else - { - dol_print_error($this->db); - } - } - -} - diff --git a/htdocs/core/class/smtps.class.php b/htdocs/core/class/smtps.class.php index 39a45ad783b8d4648221a3a748e45e9337f7f40a..c8ce225e0c2b23dbf5aca5e08c22bf49b2ad77de 100644 --- a/htdocs/core/class/smtps.class.php +++ b/htdocs/core/class/smtps.class.php @@ -489,14 +489,20 @@ class SMTPs // and send it out "single file" foreach ( $this->get_RCPT_list() as $_address ) { - /* + /* Note: + * BCC email addresses must be listed in the RCPT TO command list, + * but the BCC header should not be printed under the DATA command. + * http://stackoverflow.com/questions/2750211/sending-bcc-emails-using-a-smtp-server + */ + + /* * TODO - * After each 'RCPT TO:' is sent, we need to make sure it was kosher, - * if not, the whole message will fail - * If any email address fails, we will need to RESET the connection, - * mark the last address as "bad" and start the address loop over again. - * If any address fails, the entire message fails. - */ + * After each 'RCPT TO:' is sent, we need to make sure it was kosher, + * if not, the whole message will fail + * If any email address fails, we will need to RESET the connection, + * mark the last address as "bad" and start the address loop over again. + * If any address fails, the entire message fails. + */ $this->socket_send_str('RCPT TO: <' . $_address . '>', '250'); } @@ -1025,7 +1031,7 @@ class SMTPs /** * Returns an array of addresses for a specific type; TO, CC or BCC * - * @param string $_which Which collection of adresses to return + * @param string $_which Which collection of addresses to return ('to', 'cc', 'bcc') * @return string|false Array of emaill address */ function get_email_list($_which = null) @@ -1174,9 +1180,17 @@ class SMTPs if ( $this->getCC() ) $_header .= 'Cc: ' . $this->getCC() . "\r\n"; + /* Note: + * BCC email addresses must be listed in the RCPT TO command list, + * but the BCC header should not be printed under the DATA command. + * So it is included into the function sendMsg() but not here. + * http://stackoverflow.com/questions/2750211/sending-bcc-emails-using-a-smtp-server + */ + /* if ( $this->getBCC() ) $_header .= 'Bcc: ' . $this->getBCC() . "\r\n"; - + */ + $host=$this->getHost(); $host=preg_replace('@tcp://@i','',$host); // Remove prefix $host=preg_replace('@ssl://@i','',$host); // Remove prefix diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index b80380564840596b3cef1d58327fe7312cad0724..c63227e1601ad61ab834ddd21430fc11d5742b29 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -36,7 +36,7 @@ abstract class DoliDB implements Database /** @var string Charset used to force charset when creating database */ public $forcecharset='utf8'; /** @var string Collate used to force collate when creating database */ - public $forcecollate='utf8_general_ci'; + public $forcecollate='utf8_unicode_ci'; /** @var resource Resultset of last query */ private $_results; /** @var bool true if connected, else false */ diff --git a/htdocs/core/db/mysqli.class.php b/htdocs/core/db/mysqli.class.php index 087abf709d9c31bac94635c813d1f649ecd34dbf..d7ff764ce7a7ca3c0068458fffc03d11b805439f 100644 --- a/htdocs/core/db/mysqli.class.php +++ b/htdocs/core/db/mysqli.class.php @@ -854,7 +854,7 @@ class DoliDBMysqli extends DoliDB } /** - * Return charset used to store data in database + * Return charset used to store data in current database (same result than using SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "databasename";) * * @return string Charset */ @@ -897,7 +897,7 @@ class DoliDBMysqli extends DoliDB } /** - * Return collation used in database + * Return collation used in current database * * @return string Collation value */ diff --git a/htdocs/core/filemanagerdol/connectors/php/config.php b/htdocs/core/filemanagerdol/connectors/php/config.php index 8733e6a7c1706dfc086c8f1a7d89fd431724fa7e..de8b4d7e8bf1fd6ba8a1f24e859cf61703edf5f8 100644 --- a/htdocs/core/filemanagerdol/connectors/php/config.php +++ b/htdocs/core/filemanagerdol/connectors/php/config.php @@ -45,10 +45,12 @@ $Config['Enabled'] = true ; // Path to user files relative to the document root. -$Config['UserFilesPath'] = DOL_URL_ROOT.'/viewimage.php?modulepart=medias'.(empty($website)?'':'_'.$website).'&file=' ; +$extEntity=(empty($entity) ? 1 : $entity); // For multicompany with external access +$Config['UserFilesPath'] = DOL_URL_ROOT.'/viewimage.php?modulepart=medias'.(empty($website)?'':'_'.$website).'&entity='.$extEntity.'&file=' ; $Config['UserFilesAbsolutePathRelative'] = (empty($website) ? ((!empty($entity) ? '/' . $entity : '') . '/medias/') : ('/websites/'.$website)); + // Fill the following value it you prefer to specify the absolute path for the // user files directory. Useful if you are using a virtual directory, symbolic // link or alias. Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'. diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index cdc45de825e3d2849e21667cc9955fd055b8b2e5..57a4c03c63f59ae7df0074f43c0f883be1b4f93a 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -108,7 +108,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh { $multiselect=(!empty($conf->global->AGENDA_USE_EVENT_TYPE)); } - print $formactions->select_type_actions($actioncode, "actioncode", $excludetype, (empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:0), 0, $multiselect); + print $formactions->select_type_actions($actioncode, "actioncode", $excludetype, (empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:-1), 0, $multiselect); print '</td></tr>'; } diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index 4b0ae91ee3f0fbd1984048ff5e2196aaceb6ddb2..0193a33b305c41bee2e241acebe92009486e8b96 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -35,7 +35,7 @@ * @param string $urloption More parameters on URL request * @param int $minLength Minimum number of chars to trigger that Ajax search * @param int $autoselect Automatic selection if just one value - * @param array $ajaxoptions Multiple options array + * @param array $ajaxoptions Multiple options array * Ex: array('update'=>array('field1','field2'...)) will reset field1 and field2 once select done * Ex: array('disabled'=> * Ex: array('show'=> @@ -61,8 +61,8 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLengt $("input#search_'.$htmlname.'").keydown(function() { $("#'.$htmlname.'").val(""); }); - - /* I disable this. A call to trigger is already done later into the select action of the autocomplete code + + /* I disable this. A call to trigger is already done later into the select action of the autocomplete code $("input#search_'.$htmlname.'").change(function() { console.log("Call the change trigger on input '.$htmlname.' because of a change on search_'.$htmlname.' was triggered"); $("#'.$htmlname.'").trigger("change"); @@ -291,7 +291,7 @@ function ajax_multiautocompleter($htmlname, $fields, $url, $option='', $minLengt needtotrigger="#" + fields[i]; } } - + if (needtotrigger != "") // To force select2 to refresh visible content { // We introduce a delay so hand is back to js and all other js change can be done before the trigger that may execute a submit is done @@ -322,7 +322,8 @@ function ajax_dialog($title,$message,$w=350,$h=150) { global $langs; - $msg= '<div id="dialog-info" title="'.dol_escape_htmltag($title).'">'; + $newtitle=dol_textishtml($title)?dol_string_nohtmltag($title,1):$title; + $msg= '<div id="dialog-info" title="'.dol_escape_htmltag($newtitle).'">'; $msg.= $message; $msg.= '</div>'."\n"; $msg.= '<script type="text/javascript"> @@ -355,9 +356,10 @@ function ajax_dialog($title,$message,$w=350,$h=150) * @param array $events More events option. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled'))) * @param int $minLengthToAutocomplete Minimum length of input string to start autocomplete * @param int $forcefocus Force focus on field + * @param string $widthTypeOfAutocomplete 'resolve' or 'off' * @return string Return html string to convert a select field into a combo, or '' if feature has been disabled for some reason. */ -function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $forcefocus=0) +function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $forcefocus=0, $widthTypeOfAutocomplete='resolve') { global $conf; @@ -374,7 +376,7 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $ $(document).ready(function () { $(\''.(preg_match('/^\./',$htmlname)?$htmlname:'#'.$htmlname).'\').'.$tmpplugin.'({ dir: \'ltr\', - width: \'resolve\', /* off or resolve */ + width: \''.$widthTypeOfAutocomplete.'\', /* off or resolve */ minimumInputLength: '.$minLengthToAutocomplete.' })'; if ($forcefocus) $msg.= '.select2(\'focus\')'; diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 8c73889499859d7a96f5afc0a2823c0cec477545..e99a6913773afb9f94a1b48a593a67923e112739 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -1002,7 +1002,26 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint= if (get_class($filterobj) == 'Adherent') $sql.= " AND a.fk_element = m.rowid AND a.elementtype = 'member'"; if (get_class($filterobj) == 'Adherent' && $filterobj->id) $sql.= " AND a.fk_element = ".$filterobj->id; if (is_object($objcon) && $objcon->id) $sql.= " AND a.fk_contact = ".$objcon->id; - if (!empty($actioncode)) $sql.= " AND c.code='".$actioncode."' "; + // Condition on actioncode + if (! empty($actioncode)) + { + if (empty($conf->global->AGENDA_USE_EVENT_TYPE)) + { + if ($actioncode == 'AC_NON_AUTO') $sql.= " AND c.type != 'systemauto'"; + elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND c.type = 'systemauto'"; + else + { + if ($actioncode == 'AC_OTH') $sql.= " AND c.type != 'systemauto'"; + if ($actioncode == 'AC_OTH_AUTO') $sql.= " AND c.type = 'systemauto'"; + } + } + else + { + if ($actioncode == 'AC_NON_AUTO') $sql.= " AND c.type != 'systemauto'"; + elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND c.type = 'systemauto'"; + else $sql.= " AND c.code = '".$db->escape($actioncode)."'"; + } + } if ($donetodo == 'todo') $sql.= " AND ((a.percent >= 0 AND a.percent < 100) OR (a.percent = -1 AND a.datep > '".$db->idate($now)."'))"; if ($donetodo == 'done') $sql.= " AND (a.percent = 100 OR (a.percent = -1 AND a.datep <= '".$db->idate($now)."'))"; if (is_array($filters) && $filters['search_agenda_label']) $sql.= natural_search('a.label', $filters['search_agenda_label']); @@ -1140,7 +1159,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint= $out.='</td>'; } $out.=getTitleFieldOfList($langs->trans("Ref"), 0, $_SERVER["PHP_SELF"], 'a.id', '', $param, '', $sortfield, $sortorder); - $out.='<td>'.$langs->trans("Label").'</td>'; + $out.='<td class="maxwidth100onsmartphone">'.$langs->trans("Label").'</td>'; $out.=getTitleFieldOfList($langs->trans("Date"), 0, $_SERVER["PHP_SELF"], 'a.datep, a.id', '', $param, '', $sortfield, $sortorder); $out.='<td>'.$langs->trans("Type").'</td>'; $out.='<td></td>'; @@ -1157,10 +1176,10 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint= $out.='<td></td>'; } $out.='<td></td>'; - $out.='<td><input type="text" name="search_agenda_label" value="'.$filters['search_agenda_label'].'"></td>'; + $out.='<td class="maxwidth100onsmartphone"><input type="text" name="search_agenda_label" value="'.$filters['search_agenda_label'].'"></td>'; $out.='<td></td>'; $out.='<td>'; - $out.=$formactions->select_type_actions($actioncode, "actioncode", '', empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:0, 0, 0, 1); + $out.=$formactions->select_type_actions($actioncode, "actioncode", '', empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:-1, 0, 0, 1); $out.='</td>'; $out.='<td></td>'; $out.='<td></td>'; @@ -1235,8 +1254,13 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint= if ($histo[$key]['acode'] == 'AC_FAX') $out.=img_picto('', 'object_phoning_fax').' '; if ($histo[$key]['acode'] == 'AC_EMAIL') $out.=img_picto('', 'object_email').' '; } + $out.=$actionstatic->type; + } + else { + $typelabel = $actionstatic->type; + if ($histo[$key]['acode'] != 'AC_OTH_AUTO') $typelabel = $langs->trans("ActionAC_MANUAL"); + $out.=$typelabel; } - $out.=$actionstatic->type; $out.='</td>'; // Title of event diff --git a/htdocs/core/lib/donation.lib.php b/htdocs/core/lib/donation.lib.php index 5ff91fb1286e96e1d5965fdc13b4bd0cea29a81d..51f6858eafd3cc53e59f31c041759b2e6fcc932e 100644 --- a/htdocs/core/lib/donation.lib.php +++ b/htdocs/core/lib/donation.lib.php @@ -89,6 +89,15 @@ function donation_prepare_head($object) $head[$h][2] = 'documents'; $h++; + $nbNote = 0; + if(!empty($object->note_private)) $nbNote++; + if(!empty($object->note_public)) $nbNote++; + $head[$h][0] = DOL_URL_ROOT.'/don/note.php?id='.$object->id; + $head[$h][1] = $langs->trans("Notes"); + if ($nbNote > 0) $head[$h][1].= ' <span class="badge">'.$nbNote.'</span>'; + $head[$h][2] = 'note'; + $h++; + $head[$h][0] = DOL_URL_ROOT . '/don/info.php?id=' . $object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index d7414a4683595f4578720d3383ef25c41a3a1e5b..bc9dd52dd559d55209f98956755e1ea4c53c61af 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -939,11 +939,12 @@ function dol_get_fiche_end($notab=0) * @param string $moreparam More param to add in nav link url. * @param int $nodbprefix Do not include DB prefix to forge table name * @param string $morehtmlleft More html code to show before ref + * @param string $morehtmlstatus More html code to show under navigation arrows * @param string $morehtmlright More html code to show before navigation arrows * @param int $onlybanner Put this to 1, if the card will contains only a banner * @return void */ -function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlright='', $onlybanner=0) +function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='') { global $conf, $form, $user, $langs; @@ -1013,38 +1014,38 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r } if ($showbarcode) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$form->showbarcode($object).'</div>'; if ($object->element == 'societe' && ! empty($conf->use_javascript_ajax) && $user->rights->societe->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { - $morehtmlright.=ajax_object_onoff($object, 'status', 'status', 'InActivity', 'ActivityCeased'); + $morehtmlstatus.=ajax_object_onoff($object, 'status', 'status', 'InActivity', 'ActivityCeased'); } elseif ($object->element == 'product') { - //$morehtmlright.=$langs->trans("Status").' ('.$langs->trans("Sell").') '; + //$morehtmlstatus.=$langs->trans("Status").' ('.$langs->trans("Sell").') '; if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { - $morehtmlright.=ajax_object_onoff($object, 'status', 'tosell', 'ProductStatusOnSell', 'ProductStatusNotOnSell'); + $morehtmlstatus.=ajax_object_onoff($object, 'status', 'tosell', 'ProductStatusOnSell', 'ProductStatusNotOnSell'); } else { - $morehtmlright.=$object->getLibStatut(5,0); + $morehtmlstatus.=$object->getLibStatut(5,0); } - $morehtmlright.=' '; - //$morehtmlright.=$langs->trans("Status").' ('.$langs->trans("Buy").') '; + $morehtmlstatus.=' '; + //$morehtmlstatus.=$langs->trans("Status").' ('.$langs->trans("Buy").') '; if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { - $morehtmlright.=ajax_object_onoff($object, 'status_buy', 'tobuy', 'ProductStatusOnBuy', 'ProductStatusNotOnBuy'); + $morehtmlstatus.=ajax_object_onoff($object, 'status_buy', 'tobuy', 'ProductStatusOnBuy', 'ProductStatusNotOnBuy'); } else { - $morehtmlright.=$object->getLibStatut(5,1); + $morehtmlstatus.=$object->getLibStatut(5,1); } } elseif ($object->element == 'facture' || $object->element == 'invoice' || $object->element == 'invoice_supplier') { $tmptxt=$object->getLibStatut(6, $object->totalpaye); - if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3)) $tmptxt=$object->getLibStatut(5, $object->totalpaye); - $morehtmlright.=$tmptxt; + if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3) || $conf->browser->layout=='phone') $tmptxt=$object->getLibStatut(5, $object->totalpaye); + $morehtmlstatus.=$tmptxt; } elseif ($object->element == 'facturerec') { - $morehtmlright.='<!-- No status for recurring invoice -->'; + $morehtmlstatus.='<!-- No status for recurring invoice -->'; } - else { + else { // Generic case $tmptxt=$object->getLibStatut(6); - if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3)) $tmptxt=$object->getLibStatut(5); - $morehtmlright.=$tmptxt; + if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3) || $conf->browser->layout=='phone') $tmptxt=$object->getLibStatut(5); + $morehtmlstatus.=$tmptxt; } if (! empty($object->name_alias)) $morehtmlref.='<div class="refidno">'.$object->name_alias.'</div>'; // For thirdparty if (! empty($object->label)) $morehtmlref.='<div class="refidno">'.$object->label.'</div>'; // For product @@ -1062,7 +1063,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r } print '<div class="'.($onlybanner?'':'arearef ').'heightref valignmiddle" width="100%">'; - print $form->showrefnav($object, $paramid, $morehtml, $shownav, $fieldid, $fieldref, $morehtmlref, $moreparam, $nodbprefix, $morehtmlleft, $morehtmlright); + print $form->showrefnav($object, $paramid, $morehtml, $shownav, $fieldid, $fieldref, $morehtmlref, $moreparam, $nodbprefix, $morehtmlleft, $morehtmlstatus, $morehtmlright); print '</div>'; print '<div class="underrefbanner clearboth"></div>'; } @@ -1080,9 +1081,9 @@ function fieldLabel($langkey, $fieldkey, $fieldrequired=0) global $conf, $langs; $ret=''; if ($fieldrequired) $ret.='<span class="fieldrequired">'; - if (empty($conf->dol_use_jmobile)) $ret.='<label for="'.$fieldkey.'">'; + if (($conf->dol_use_jmobile != 4)) $ret.='<label for="'.$fieldkey.'">'; $ret.=$langs->trans($langkey); - if (empty($conf->dol_use_jmobile)) $ret.='</label>'; + if (($conf->dol_use_jmobile != 4)) $ret.='</label>'; if ($fieldrequired) $ret.='</span>'; return $ret; } @@ -2241,14 +2242,14 @@ function dol_trunc($string,$size=40,$trunc='right',$stringencoding='UTF-8',$nodo * Example: picto.png if picto.png is stored into htdocs/theme/mytheme/img * Example: picto.png@mymodule if picto.png is stored into htdocs/mymodule/img * Example: /mydir/mysubdir/picto.png if picto.png is stored into htdocs/mydir/mysubdir (pictoisfullpath must be set to 1) - * @param string $options Add more attribute on img tag (For example 'style="float: right"') + * @param string $morealt Add more attribute on img tag (For example 'style="float: right"') * @param int $pictoisfullpath If 1, image path is a full path * @param int $srconly Return only content of the src attribute of img. * @param int $notitle 1=Disable tag title. Use it if you add js tooltip, to avoid duplicate tooltip. * @return string Return img tag * @see #img_object, #img_picto_common */ -function img_picto($titlealt, $picto, $options = '', $pictoisfullpath = false, $srconly=0, $notitle=0) +function img_picto($titlealt, $picto, $morealt = '', $pictoisfullpath = false, $srconly=0, $notitle=0) { global $conf; @@ -2300,7 +2301,7 @@ function img_picto($titlealt, $picto, $options = '', $pictoisfullpath = false, $ if (preg_match('/:[^\s0-9]/',$titlealt)) $tmparray=explode(':',$titlealt); // We explode if we have TextA:TextB. Not if we have TextA: TextB $title=$tmparray[0]; $alt=empty($tmparray[1])?'':$tmparray[1]; - return '<img src="'.$fullpathpicto.'" border="0" alt="'.dol_escape_htmltag($alt).'"'.($notitle?'':' title="'.dol_escape_htmltag($title).'"').($options?' '.$options:'').'>'; // Alt is used for accessibility, title for popup + return '<img src="'.$fullpathpicto.'" border="0" alt="'.dol_escape_htmltag($alt).'"'.($notitle?'':' title="'.dol_escape_htmltag($title).'"').($morealt?' '.$morealt:'').'>'; // Alt is used for accessibility, title for popup } } @@ -2310,16 +2311,16 @@ function img_picto($titlealt, $picto, $options = '', $pictoisfullpath = false, $ * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. * @param string $picto Name of image to show object_picto (example: user, group, action, bill, contract, propal, product, ...) * For external modules use imagename@mymodule to search into directory "img" of module. - * @param string $options Add more attribute on img tag (ie: class="datecallink") + * @param string $morealt Add more attribute on img tag (ie: class="datecallink") * @param int $pictoisfullpath If 1, image path is a full path * @param int $srconly Return only content of the src attribute of img. * @param int $notitle 1=Disable tag title. Use it if you add js tooltip, to avoid duplicate tooltip. * @return string Return img tag * @see #img_picto, #img_picto_common */ -function img_object($titlealt, $picto, $options = '', $pictoisfullpath = false, $srconly=0, $notitle=0) +function img_object($titlealt, $picto, $morealt = '', $pictoisfullpath = false, $srconly=0, $notitle=0) { - return img_picto($titlealt, 'object_'.$picto, $options, $pictoisfullpath, $srconly, $notitle); + return img_picto($titlealt, 'object_'.$picto, $morealt, $pictoisfullpath, $srconly, $notitle); } /** @@ -2327,12 +2328,12 @@ function img_object($titlealt, $picto, $options = '', $pictoisfullpath = false, * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. * @param string $picto Name of image file to show (If no extension provided, we use '.png'). Image must be stored into htdocs/theme/common directory. - * @param string $options Add more attribute on img tag + * @param string $morealt Add more attribute on img tag * @param int $pictoisfullpath If 1, image path is a full path * @return string Return img tag * @see #img_object, #img_picto */ -function img_weather($titlealt, $picto, $options = '', $pictoisfullpath = 0) +function img_weather($titlealt, $picto, $morealt = '', $pictoisfullpath = 0) { global $conf; @@ -2340,7 +2341,7 @@ function img_weather($titlealt, $picto, $options = '', $pictoisfullpath = 0) $path = DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/weather/'.$picto; - return img_picto($titlealt, $path, $options, 1); + return img_picto($titlealt, $path, $morealt, 1); } /** @@ -2348,12 +2349,12 @@ function img_weather($titlealt, $picto, $options = '', $pictoisfullpath = 0) * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. * @param string $picto Name of image file to show (If no extension provided, we use '.png'). Image must be stored into htdocs/theme/common directory. - * @param string $options Add more attribute on img tag + * @param string $morealt Add more attribute on img tag * @param int $pictoisfullpath If 1, image path is a full path * @return string Return img tag * @see #img_object, #img_picto */ -function img_picto_common($titlealt, $picto, $options = '', $pictoisfullpath = 0) +function img_picto_common($titlealt, $picto, $morealt = '', $pictoisfullpath = 0) { global $conf; @@ -2372,7 +2373,7 @@ function img_picto_common($titlealt, $picto, $options = '', $pictoisfullpath = 0 } } - return img_picto($titlealt, $path, $options, 1); + return img_picto($titlealt, $path, $morealt, 1); } /** @@ -2478,9 +2479,9 @@ function img_view($titlealt = 'default', $float = 0, $other = '') if ($titlealt == 'default') $titlealt = $langs->trans('View'); - $options = ($float ? 'style="float: right" ' : '').$other; + $morealt = ($float ? 'style="float: right" ' : '').$other; - return img_picto($titlealt, 'view.png', $options); + return img_picto($titlealt, 'view.png', $morealt); } /** @@ -2552,16 +2553,16 @@ function img_info($titlealt = 'default') * Show warning logo * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. - * @param string $options Add more attribute on img tag (For example 'style="float: right"'). If 1 + * @param string $morealt Add more attribute on img tag (For example 'style="float: right"'). If 1 * @return string Return img tag */ -function img_warning($titlealt = 'default', $options = '') +function img_warning($titlealt = 'default', $morealt = '') { global $conf, $langs; if ($titlealt == 'default') $titlealt = $langs->trans('Warning'); - return img_picto($titlealt, 'warning.png', 'class="pictowarning"'.($options ? ($options == '1' ? ' style="float: right"' : ' '.$options): '')); + return img_picto($titlealt, 'warning.png', 'class="pictowarning"'.($morealt ? ($morealt == '1' ? ' style="float: right"' : ' '.$morealt): '')); } /** @@ -2583,32 +2584,32 @@ function img_error($titlealt = 'default') * Show next logo * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. -* @param string $options Add more attribute on img tag (For example 'style="float: right"') +* @param string $morealt Add more attribute on img tag (For example 'style="float: right"') * @return string Return img tag */ -function img_next($titlealt = 'default', $options='') +function img_next($titlealt = 'default', $morealt='') { global $conf, $langs; if ($titlealt == 'default') $titlealt = $langs->trans('Next'); - return img_picto($titlealt, 'next.png', $options); + return img_picto($titlealt, 'next.png', $morealt); } /** * Show previous logo * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. - * @param string $options Add more attribute on img tag (For example 'style="float: right"') + * @param string $morealt Add more attribute on img tag (For example 'style="float: right"') * @return string Return img tag */ -function img_previous($titlealt = 'default', $options='') +function img_previous($titlealt = 'default', $morealt='') { global $conf, $langs; if ($titlealt == 'default') $titlealt = $langs->trans('Previous'); - return img_picto($titlealt, 'previous.png', $options); + return img_picto($titlealt, 'previous.png', $morealt); } /** @@ -2650,16 +2651,16 @@ function img_up($titlealt = 'default', $selected = 0, $moreclass='') * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. * @param int $selected Selected - * @param string $options Add more attribute on img tag (For example 'style="float: right"') + * @param string $morealt Add more attribute on img tag (For example 'style="float: right"') * @return string Return img tag */ -function img_left($titlealt = 'default', $selected = 0, $options='') +function img_left($titlealt = 'default', $selected = 0, $morealt='') { global $conf, $langs; if ($titlealt == 'default') $titlealt = $langs->trans('Left'); - return img_picto($titlealt, ($selected ? '1leftarrow_selected.png' : '1leftarrow.png'), $options); + return img_picto($titlealt, ($selected ? '1leftarrow_selected.png' : '1leftarrow.png'), $morealt); } /** @@ -2667,16 +2668,16 @@ function img_left($titlealt = 'default', $selected = 0, $options='') * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. * @param int $selected Selected - * @param string $options Add more attribute on img tag (For example 'style="float: right"') + * @param string $morealt Add more attribute on img tag (For example 'style="float: right"') * @return string Return img tag */ -function img_right($titlealt = 'default', $selected = 0, $options='') +function img_right($titlealt = 'default', $selected = 0, $morealt='') { global $conf, $langs; if ($titlealt == 'default') $titlealt = $langs->trans('Right'); - return img_picto($titlealt, ($selected ? '1rightarrow_selected.png' : '1rightarrow.png'), $options); + return img_picto($titlealt, ($selected ? '1rightarrow_selected.png' : '1rightarrow.png'), $morealt); } /** @@ -3098,7 +3099,7 @@ function print_fiche_titre($title, $mesg='', $picto='title_generic.png', $pictoi * Load a title with picto * * @param string $titre Title to show - * @param string $mesg Added message to show on right + * @param string $morehtmlright Added message to show on right * @param string $picto Icon to use before title (should be a 32x32 transparent png file) * @param int $pictoisfullpath 1=Icon name is a full absolute url of image * @param int $id To force an id on html objects @@ -3106,7 +3107,7 @@ function print_fiche_titre($title, $mesg='', $picto='title_generic.png', $pictoi * @return string * @see print_barre_liste */ -function load_fiche_titre($titre, $mesg='', $picto='title_generic.png', $pictoisfullpath=0, $id=0, $morecssontable='') +function load_fiche_titre($titre, $morehtmlright='', $picto='title_generic.png', $pictoisfullpath=0, $id=0, $morecssontable='') { global $conf; @@ -3121,9 +3122,9 @@ function load_fiche_titre($titre, $mesg='', $picto='title_generic.png', $pictois $return.= '<td class="nobordernopadding" valign="middle">'; $return.= '<div class="titre">'.$titre.'</div>'; $return.= '</td>'; - if (dol_strlen($mesg)) + if (dol_strlen($morehtmlright)) { - $return.= '<td class="nobordernopadding titre_right" align="right" valign="middle">'.$mesg.'</td>'; + $return.= '<td class="nobordernopadding titre_right" align="right" valign="middle">'.$morehtmlright.'</td>'; } $return.= '</tr></table>'."\n"; @@ -3177,7 +3178,7 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so // Left //if ($picto && $titre) print '<td class="nobordernopadding hideonsmartphone" width="40" align="left" valign="middle">'.img_picto('', $picto, 'id="pictotitle"', $pictoisfullpath).'</td>'; - print '<td class="nobordernopadding" style="width: 35%" valign="middle">'; + print '<td class="nobordernopadding valignmiddle">'; if ($picto && $titre) print img_picto('', $picto, 'class="hideonsmartphone valignmiddle" id="pictotitle"', $pictoisfullpath); print '<div class="titre inline-block">'.$titre; if (!empty($titre) && $savtotalnboflines > 0) print ' ('.$totalnboflines.')'; @@ -3186,11 +3187,11 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so // Center if ($center) { - print '<td class="nobordernopadding center" style="width: 30%" valign="middle">'.$center.'</td>'; + print '<td class="nobordernopadding center valignmiddle">'.$center.'</td>'; } // Right - print '<td class="nobordernopadding" align="right" style="width: 35%" valign="middle">'; + print '<td class="nobordernopadding valignmiddle" align="right">'; if ($sortfield) $options .= "&sortfield=".$sortfield; if ($sortorder) $options .= "&sortorder=".$sortorder; // Show navigation bar @@ -3208,20 +3209,20 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so if ($cpt>=1) { - $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page=0'.$options.'">1</a></li>'; - if ($cpt > 2) $pagelist.='<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="inactive"':'data-role="button"').'>...</span></li>'; - else if ($cpt == 2) $pagelist.='<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page=1'.$options.'">2</a></li>'; + $pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><a '.(($conf->dol_use_jmobile != 4)?'':'data-role="button" ').'href="'.$file.'?page=0'.$options.'">1</a></li>'; + if ($cpt > 2) $pagelist.='<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><span '.(($conf->dol_use_jmobile != 4)?'class="inactive"':'data-role="button"').'>...</span></li>'; + else if ($cpt == 2) $pagelist.='<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><a '.(($conf->dol_use_jmobile != 4)?'':'data-role="button" ').'href="'.$file.'?page=1'.$options.'">2</a></li>'; } do { if ($cpt==$page) { - $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="active"':'data-role="button"').'>'.($page+1).'</span></li>'; + $pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><span '.(($conf->dol_use_jmobile != 4)?'class="active"':'data-role="button"').'>'.($page+1).'</span></li>'; } else { - $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page='.$cpt.$options.'">'.($cpt+1).'</a></li>'; + $pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><a '.(($conf->dol_use_jmobile != 4)?'':'data-role="button" ').'href="'.$file.'?page='.$cpt.$options.'">'.($cpt+1).'</a></li>'; } $cpt++; } @@ -3229,14 +3230,14 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so if ($cpt<$nbpages) { - if ($cpt<$nbpages-2) $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="inactive"':'data-role="button"').'>...</span></li>'; - else if ($cpt == $nbpages-2) $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page='.($nbpages-2).$options.'">'.($nbpages - 1).'</a></li>'; - $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page='.($nbpages-1).$options.'">'.$nbpages.'</a></li>'; + if ($cpt<$nbpages-2) $pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><span '.(($conf->dol_use_jmobile != 4)?'class="inactive"':'data-role="button"').'>...</span></li>'; + else if ($cpt == $nbpages-2) $pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><a '.(($conf->dol_use_jmobile != 4)?'':'data-role="button" ').'href="'.$file.'?page='.($nbpages-2).$options.'">'.($nbpages - 1).'</a></li>'; + $pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><a '.(($conf->dol_use_jmobile != 4)?'':'data-role="button" ').'href="'.$file.'?page='.($nbpages-1).$options.'">'.$nbpages.'</a></li>'; } } else { - $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="active"':'data-role="button"').'>'.($page+1)."</li>"; + $pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><span '.(($conf->dol_use_jmobile != 4)?'class="active"':'data-role="button"').'>'.($page+1)."</li>"; } } print_fleche_navigation($page, $file, $options, $nextpage, $pagelist, $morehtml, $savlimit, $totalnboflines, $hideselectlimit); // output the div and ul for previous/last completed with page numbers into $pagelist @@ -3315,7 +3316,7 @@ function print_fleche_navigation($page, $file, $options='', $nextpage=0, $betwee } if ($page > 0) { - if (empty($conf->dol_use_jmobile)) print '<li class="pagination"><a class="paginationprevious" href="'.$file.'?page='.($page-1).$options.'"><</a></li>'; + if (($conf->dol_use_jmobile != 4)) print '<li class="pagination"><a class="paginationprevious" href="'.$file.'?page='.($page-1).$options.'"><</a></li>'; else print '<li><a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$file.'?page='.($page-1).$options.'">'.$langs->trans("Previous").'</a></li>'; } if ($betweenarrows) @@ -3324,7 +3325,7 @@ function print_fleche_navigation($page, $file, $options='', $nextpage=0, $betwee } if ($nextpage > 0) { - if (empty($conf->dol_use_jmobile)) print '<li class="pagination"><a class="paginationnext" href="'.$file.'?page='.($page+1).$options.'">></a></li>'; + if (($conf->dol_use_jmobile != 4)) print '<li class="pagination"><a class="paginationnext" href="'.$file.'?page='.($page+1).$options.'">></a></li>'; else print '<li><a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$file.'?page='.($page+1).$options.'">'.$langs->trans("Next").'</a></li>'; } if ($afterarrows) @@ -5197,7 +5198,7 @@ function dol_osencode($str) * Store also Code-Id into a cache to speed up next request on same key. * * @param DoliDB $db Database handler - * @param string $key Code to get Id + * @param string $key Code or Id to get Id or Code * @param string $tablename Table name without prefix * @param string $fieldkey Field for code * @param string $fieldid Field for id @@ -5479,7 +5480,7 @@ function printCommonFooter($zone='private') // Google Analytics (need Google module) if (! empty($conf->google->enabled) && ! empty($conf->global->MAIN_GOOGLE_AN_ID)) { - if (empty($conf->dol_use_jmobile)) + if (($conf->dol_use_jmobile != 4)) { print "\n"; print '<script type="text/javascript">'."\n"; diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php index 8b017a5a9f3fae7b2eacff8344114f8eea9525f1..840687ba69a81a54b96d8835d57434217eb2a72b 100644 --- a/htdocs/core/lib/price.lib.php +++ b/htdocs/core/lib/price.lib.php @@ -322,7 +322,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt { $result[1]=round($result[1]/$conf->global->MAIN_ROUNDING_RULE_TOT, 0)*$conf->global->MAIN_ROUNDING_RULE_TOT; $result[2]=round($result[2]/$conf->global->MAIN_ROUNDING_RULE_TOT, 0)*$conf->global->MAIN_ROUNDING_RULE_TOT; - $result[0]=price2num($result[2]-$result[0], 'MT'); + $result[0]=price2num($result[2]-$result[1], 'MT'); $result[9]=round($result[9]/$conf->global->MAIN_ROUNDING_RULE_TOT, 0)*$conf->global->MAIN_ROUNDING_RULE_TOT; $result[10]=round($result[10]/$conf->global->MAIN_ROUNDING_RULE_TOT, 0)*$conf->global->MAIN_ROUNDING_RULE_TOT; } diff --git a/htdocs/core/lib/security2.lib.php b/htdocs/core/lib/security2.lib.php index dc73c70b4ba8d2f2e26c37c0c3679befcbb35429..fc05e2c91943fd7af72436ad14e23046824f695b 100644 --- a/htdocs/core/lib/security2.lib.php +++ b/htdocs/core/lib/security2.lib.php @@ -293,7 +293,7 @@ function dol_loginfunction($langs,$conf,$mysoc) $jquerytheme = 'smoothness'; if (! empty($conf->global->MAIN_USE_JQUERY_THEME)) $jquerytheme = $conf->global->MAIN_USE_JQUERY_THEME; - // Set dol_hide_topmenu, dol_hide_leftmenu, dol_optimize_smallscreen, dol_nomousehover + // Set dol_hide_topmenu, dol_hide_leftmenu, dol_optimize_smallscreen, dol_no_mouse_hover $dol_hide_topmenu=GETPOST('dol_hide_topmenu','int'); $dol_hide_leftmenu=GETPOST('dol_hide_leftmenu','int'); $dol_optimize_smallscreen=GETPOST('dol_optimize_smallscreen','int'); diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 07b737c8bbf2b314dc73152a66b9487c7e1f4e8b..bb53a0dd1da2e1a4ccea8295afd46c8f25b367d2 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -317,15 +317,13 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4206__+MAX_llx_menu__, 'members', '', 4202__+MAX_llx_menu__, '/adherents/list.php?leftmenu=members&statut=1&filter=uptodate', 'MenuMembersUpToDate', 2, 'members', '$user->rights->adherent->lire', '', 2, 5, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4207__+MAX_llx_menu__, 'members', '', 4202__+MAX_llx_menu__, '/adherents/list.php?leftmenu=members&statut=0', 'MenuMembersResiliated', 2, 'members', '$user->rights->adherent->lire', '', 2, 6, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4208__+MAX_llx_menu__, 'members', '', 4200__+MAX_llx_menu__, '/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry', 'MenuMembersStats', 1, 'members', '$user->rights->adherent->lire', '', 2, 7, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '! empty($conf->global->MEMBER_LINK_TO_HTPASSWDFILE) && $conf->adherent->enabled', __HANDLER__, 'left', 4502__+MAX_llx_menu__, 'members', '', 4200__+MAX_llx_menu__, '/adherents/htpasswd.php?leftmenu=export', 'Filehtpasswd', 1, 'members', '$user->rights->adherent->export', '', 2, 9, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4503__+MAX_llx_menu__, 'members', '', 4200__+MAX_llx_menu__, '/adherents/cartes/carte.php?leftmenu=export', 'MembersCards', 1, 'members', '$user->rights->adherent->export', '', 2, 10, __ENTITY__); -- Members - Subscriptions insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4300__+MAX_llx_menu__, 'members', '', 13__+MAX_llx_menu__, '/adherents/index.php?leftmenu=members&mainmenu=members', 'Subscriptions', 0, 'compta', '$user->rights->adherent->cotisation->lire', '', 2, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4301__+MAX_llx_menu__, 'members', '', 4300__+MAX_llx_menu__, '/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members', 'NewSubscription', 1, 'compta', '$user->rights->adherent->cotisation->creer', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4302__+MAX_llx_menu__, 'members', '', 4300__+MAX_llx_menu__, '/adherents/subscription/list.php?leftmenu=members', 'List', 1, 'compta', '$user->rights->adherent->cotisation->lire', '', 2, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4303__+MAX_llx_menu__, 'members', '', 4300__+MAX_llx_menu__, '/adherents/stats/index.php?leftmenu=members', 'MenuMembersStats', 1, 'members', '$user->rights->adherent->lire', '', 2, 7, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4500__+MAX_llx_menu__, 'members', 'export', 13__+MAX_llx_menu__, '/adherents/index.php?leftmenu=export&mainmenu=members', 'Exports', 0, 'members', '$user->rights->adherent->export', '', 2, 3, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled && $conf->export->enabled', __HANDLER__, 'left', 4501__+MAX_llx_menu__, 'members', '', 4500__+MAX_llx_menu__, '/exports/index.php?leftmenu=export', 'Datas', 1, 'members', '$user->rights->adherent->export', '', 2, 0, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4502__+MAX_llx_menu__, 'members', '', 4500__+MAX_llx_menu__, '/adherents/htpasswd.php?leftmenu=export', 'Filehtpasswd', 1, 'members', '$user->rights->adherent->export', '', 2, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4503__+MAX_llx_menu__, 'members', '', 4500__+MAX_llx_menu__, '/adherents/cartes/carte.php?leftmenu=export', 'MembersCards', 1, 'members', '$user->rights->adherent->export', '', 2, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4700__+MAX_llx_menu__, 'members', 'setup', 13__+MAX_llx_menu__, '/adherents/type.php?leftmenu=setup&mainmenu=members', 'MembersTypes', 0, 'members', '$user->rights->adherent->configurer', '', 2, 5, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4701__+MAX_llx_menu__, 'members', '', 4700__+MAX_llx_menu__, '/adherents/type.php?leftmenu=setup&mainmenu=members&action=create', 'New', 1, 'members', '$user->rights->adherent->configurer', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4702__+MAX_llx_menu__, 'members', '', 4700__+MAX_llx_menu__, '/adherents/type.php?leftmenu=setup&mainmenu=members', 'List', 1, 'members', '$user->rights->adherent->configurer', '', 2, 1, __ENTITY__); diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index cd8d5e756450a9ce47174562f023a5cdb24dcbcd..63f1a874c39fefdee198ef8a5fc943ffb0bc9c26 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -53,8 +53,10 @@ function print_auguria_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$m if (empty($noout)) print_start_menu_array_auguria(); + $usemenuhider = (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)); + // Show/Hide vertical menu - if ($mode != 'jmobile' && $mode != 'topnb' && (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) + if ($mode != 'jmobile' && $mode != 'topnb' && $usemenuhider && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { $showmode=1; $classname = 'class="tmenu menuhider"'; @@ -246,6 +248,9 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM $mainmenu=($forcemainmenu?$forcemainmenu:$_SESSION["mainmenu"]); $leftmenu=($forceleftmenu?'':(empty($_SESSION["leftmenu"])?'none':$_SESSION["leftmenu"])); + $usemenuhider = (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)); + global $usemenuhider; + // Show logo company if (empty($noout) && ! empty($conf->global->MAIN_SHOW_LOGO) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index e64d6318105088fef88ef4e328a6cd16716c41b6..629db07eb77dfbcaa08a264d1e5bd85123211a93 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -51,8 +51,10 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode if (empty($noout)) print_start_menu_array(); + $usemenuhider = (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)); + // Show/Hide vertical menu - if ($mode != 'jmobile' && $mode != 'topnb' && (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) + if ($mode != 'jmobile' && $mode != 'topnb' && $usemenuhider && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { $showmode=1; $classname = 'class="tmenu menuhider"'; @@ -456,6 +458,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $mainmenu=($forcemainmenu?$forcemainmenu:$_SESSION["mainmenu"]); $leftmenu=($forceleftmenu?'':(empty($_SESSION["leftmenu"])?'none':$_SESSION["leftmenu"])); + $usemenuhider = (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)); + // Show logo company if (empty($conf->global->MAIN_MENU_INVERT) && empty($noout) && ! empty($conf->global->MAIN_SHOW_LOGO) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { @@ -508,7 +512,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu // Setup $newmenu->add("/admin/index.php?mainmenu=home&leftmenu=setup", $langs->trans("Setup"), 0, $user->admin, '', $mainmenu, 'setup'); - if (empty($leftmenu) || $leftmenu=="setup") + if ($usemenuhider || empty($leftmenu) || $leftmenu=="setup") { $langs->load("admin"); $langs->load("help"); @@ -544,15 +548,15 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu // System tools $newmenu->add("/admin/tools/index.php?mainmenu=home&leftmenu=admintools", $langs->trans("AdminTools"), 0, $user->admin, '', $mainmenu, 'admintools'); - if (empty($leftmenu) || preg_match('/^admintools/',$leftmenu)) + if ($usemenuhider || empty($leftmenu) || preg_match('/^admintools/',$leftmenu)) { $langs->load("admin"); $langs->load("help"); $newmenu->add('/admin/system/dolibarr.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('InfoDolibarr'), 1); - if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Modules'), 2); - if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/triggers.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Triggers'), 2); - if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/filecheck.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('FileCheck'), 2); + if ($usemenuhider || empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Modules'), 2); + if ($usemenuhider || empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/triggers.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Triggers'), 2); + if ($usemenuhider || empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/filecheck.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('FileCheck'), 2); $newmenu->add('/admin/system/browser.php?mainmenu=home&leftmenu=admintools', $langs->trans('InfoBrowser'), 1); $newmenu->add('/admin/system/os.php?mainmenu=home&leftmenu=admintools', $langs->trans('InfoOS'), 1); $newmenu->add('/admin/system/web.php?mainmenu=home&leftmenu=admintools', $langs->trans('InfoWebServer'), 1); @@ -587,7 +591,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/user/home.php?leftmenu=users", $langs->trans("MenuUsersAndGroups"), 0, $user->rights->user->user->lire, '', $mainmenu, 'users'); if ($user->rights->user->user->lire) { - if (empty($leftmenu) || $leftmenu=="users") + if ($usemenuhider || empty($leftmenu) || $leftmenu=="users") { $newmenu->add("", $langs->trans("Users"), 1, $user->rights->user->user->lire || $user->admin); $newmenu->add("/user/card.php?leftmenu=users&action=create", $langs->trans("NewUser"),2, $user->rights->user->user->creer || $user->admin, '', 'home'); @@ -628,11 +632,11 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $langs->load("commercial"); $newmenu->add("/societe/list.php?type=p&leftmenu=prospects", $langs->trans("ListProspectsShort"), 1, $user->rights->societe->lire, '', $mainmenu, 'prospects'); /* no more required, there is a filter that can do more - if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&sortfield=s.datec&sortorder=desc&begin=&search_stcomm=-1", $langs->trans("LastProspectDoNotContact"), 2, $user->rights->societe->lire); - if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&sortfield=s.datec&sortorder=desc&begin=&search_stcomm=0", $langs->trans("LastProspectNeverContacted"), 2, $user->rights->societe->lire); - if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&sortfield=s.datec&sortorder=desc&begin=&search_stcomm=1", $langs->trans("LastProspectToContact"), 2, $user->rights->societe->lire); - if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&sortfield=s.datec&sortorder=desc&begin=&search_stcomm=2", $langs->trans("LastProspectContactInProcess"), 2, $user->rights->societe->lire); - if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&sortfield=s.datec&sortorder=desc&begin=&search_stcomm=3", $langs->trans("LastProspectContactDone"), 2, $user->rights->societe->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&sortfield=s.datec&sortorder=desc&begin=&search_stcomm=-1", $langs->trans("LastProspectDoNotContact"), 2, $user->rights->societe->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&sortfield=s.datec&sortorder=desc&begin=&search_stcomm=0", $langs->trans("LastProspectNeverContacted"), 2, $user->rights->societe->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&sortfield=s.datec&sortorder=desc&begin=&search_stcomm=1", $langs->trans("LastProspectToContact"), 2, $user->rights->societe->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&sortfield=s.datec&sortorder=desc&begin=&search_stcomm=2", $langs->trans("LastProspectContactInProcess"), 2, $user->rights->societe->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&sortfield=s.datec&sortorder=desc&begin=&search_stcomm=3", $langs->trans("LastProspectContactDone"), 2, $user->rights->societe->lire); */ $newmenu->add("/societe/soc.php?leftmenu=prospects&action=create&type=p", $langs->trans("MenuNewProspect"), 2, $user->rights->societe->creer); //$newmenu->add("/contact/list.php?leftmenu=customers&type=p", $langs->trans("Contacts"), 2, $user->rights->societe->contact->lire); @@ -688,7 +692,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/categories/index.php?leftmenu=cat&type=1", $langs->trans("SuppliersCategoriesShort"), 0, $user->rights->categorie->lire); $newmenu->add("/categories/card.php?action=create&type=1", $langs->trans("NewCategory"), 1, $user->rights->categorie->creer); } - //if (empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire); + //if ($usemenuhider || empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire); } } @@ -707,12 +711,12 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/comm/propal/index.php?leftmenu=propals", $langs->trans("Prop"), 0, $user->rights->propale->lire, '', $mainmenu, 'propals', 100); $newmenu->add("/comm/propal/card.php?action=create&leftmenu=propals", $langs->trans("NewPropal"), 1, $user->rights->propale->creer); $newmenu->add("/comm/propal/list.php?leftmenu=propals", $langs->trans("List"), 1, $user->rights->propale->lire); - if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire); - if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=1", $langs->trans("PropalsOpened"), 2, $user->rights->propale->lire); - if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=2", $langs->trans("PropalStatusSigned"), 2, $user->rights->propale->lire); - if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=3", $langs->trans("PropalStatusNotSigned"), 2, $user->rights->propale->lire); - if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=4", $langs->trans("PropalStatusBilled"), 2, $user->rights->propale->lire); - //if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort"), 2, $user->rights->propale->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=1", $langs->trans("PropalsOpened"), 2, $user->rights->propale->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=2", $langs->trans("PropalStatusSigned"), 2, $user->rights->propale->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=3", $langs->trans("PropalStatusNotSigned"), 2, $user->rights->propale->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=4", $langs->trans("PropalStatusBilled"), 2, $user->rights->propale->lire); + //if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort"), 2, $user->rights->propale->lire); $newmenu->add("/comm/propal/stats/index.php?leftmenu=propals", $langs->trans("Statistics"), 1, $user->rights->propale->lire); } @@ -723,12 +727,12 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/commande/index.php?leftmenu=orders", $langs->trans("CustomersOrders"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders', 200); $newmenu->add("/commande/card.php?action=create&leftmenu=orders", $langs->trans("NewOrder"), 1, $user->rights->commande->creer); $newmenu->add("/commande/list.php?leftmenu=orders", $langs->trans("List"), 1, $user->rights->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders" && ! empty($conf->expedition->enabled)) $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=2", $langs->trans("StatusOrderSentShort"), 2, $user->rights->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=3", $langs->trans("StatusOrderDelivered"), 2, $user->rights->commande->lire); - //if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=4", $langs->trans("StatusOrderProcessed"), 2, $user->rights->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=-1", $langs->trans("StatusOrderCanceledShort"), 2, $user->rights->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders" && ! empty($conf->expedition->enabled)) $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=2", $langs->trans("StatusOrderSentShort"), 2, $user->rights->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=3", $langs->trans("StatusOrderDelivered"), 2, $user->rights->commande->lire); + //if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=4", $langs->trans("StatusOrderProcessed"), 2, $user->rights->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=-1", $langs->trans("StatusOrderCanceledShort"), 2, $user->rights->commande->lire); $newmenu->add("/commande/stats/index.php?leftmenu=orders", $langs->trans("Statistics"), 1, $user->rights->commande->lire); } @@ -740,15 +744,15 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/fourn/commande/card.php?action=create&leftmenu=orders_suppliers", $langs->trans("NewOrder"), 1, $user->rights->fournisseur->commande->creer); $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->fournisseur->commande->lire); - if ((empty($leftmenu) || $leftmenu=="orders_suppliers") && empty($conf->global->SUPPLIER_ORDER_HIDE_VALIDATED)) $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->fournisseur->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=2", $langs->trans("StatusOrderApprovedShort"), 2, $user->rights->fournisseur->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=3", $langs->trans("StatusOrderOnProcessShort"), 2, $user->rights->fournisseur->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=4", $langs->trans("StatusOrderReceivedPartiallyShort"), 2, $user->rights->fournisseur->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=5", $langs->trans("StatusOrderReceivedAll"), 2, $user->rights->fournisseur->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=6,7", $langs->trans("StatusOrderCanceled"), 2, $user->rights->fournisseur->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=9", $langs->trans("StatusOrderRefused"), 2, $user->rights->fournisseur->commande->lire); - // Billed is another field. We should add instead a dedicated filter on list. if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&billed=1", $langs->trans("StatusOrderBilled"), 2, $user->rights->fournisseur->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->fournisseur->commande->lire); + if (($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") && empty($conf->global->SUPPLIER_ORDER_HIDE_VALIDATED)) $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->fournisseur->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=2", $langs->trans("StatusOrderApprovedShort"), 2, $user->rights->fournisseur->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=3", $langs->trans("StatusOrderOnProcessShort"), 2, $user->rights->fournisseur->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=4", $langs->trans("StatusOrderReceivedPartiallyShort"), 2, $user->rights->fournisseur->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=5", $langs->trans("StatusOrderReceivedAll"), 2, $user->rights->fournisseur->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=6,7", $langs->trans("StatusOrderCanceled"), 2, $user->rights->fournisseur->commande->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=9", $langs->trans("StatusOrderRefused"), 2, $user->rights->fournisseur->commande->lire); + // Billed is another field. We should add instead a dedicated filter on list. if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&billed=1", $langs->trans("StatusOrderBilled"), 2, $user->rights->fournisseur->commande->lire); $newmenu->add("/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier", $langs->trans("Statistics"), 1, $user->rights->fournisseur->commande->lire); @@ -762,10 +766,10 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/contrat/card.php?action=create&leftmenu=contracts", $langs->trans("NewContractSubscription"), 1, $user->rights->contrat->creer); $newmenu->add("/contrat/list.php?leftmenu=contracts", $langs->trans("List"), 1, $user->rights->contrat->lire); $newmenu->add("/contrat/services.php?leftmenu=contracts", $langs->trans("MenuServices"), 1, $user->rights->contrat->lire); - if (empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&mode=0", $langs->trans("MenuInactiveServices"), 2, $user->rights->contrat->lire); - if (empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&mode=4", $langs->trans("MenuRunningServices"), 2, $user->rights->contrat->lire); - if (empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&mode=4&filter=expired", $langs->trans("MenuExpiredServices"), 2, $user->rights->contrat->lire); - if (empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&mode=5", $langs->trans("MenuClosedServices"), 2, $user->rights->contrat->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&mode=0", $langs->trans("MenuInactiveServices"), 2, $user->rights->contrat->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&mode=4", $langs->trans("MenuRunningServices"), 2, $user->rights->contrat->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&mode=4&filter=expired", $langs->trans("MenuExpiredServices"), 2, $user->rights->contrat->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&mode=5", $langs->trans("MenuClosedServices"), 2, $user->rights->contrat->lire); } // Interventions @@ -797,7 +801,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/compta/facture.php?action=create&leftmenu=customers_bills",$langs->trans("NewBill"),1,$user->rights->facture->creer); $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills",$langs->trans("List"),1,$user->rights->facture->lire); - if (empty($leftmenu) || ($leftmenu == 'customers_bills')) + if ($usemenuhider || empty($leftmenu) || ($leftmenu == 'customers_bills')) { $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills&search_status=0",$langs->trans("BillShortStatusDraft"),2,$user->rights->facture->lire); $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills&search_status=1",$langs->trans("BillShortStatusNotPaid"),2,$user->rights->facture->lire); @@ -825,7 +829,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/fourn/facture/card.php?action=create",$langs->trans("NewBill"),1,$user->rights->fournisseur->facture->creer); $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills", $langs->trans("List"),1,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills'); - if (empty($leftmenu) || ($leftmenu == 'suppliers_bills')) { + if ($usemenuhider || empty($leftmenu) || ($leftmenu == 'suppliers_bills')) { $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills&search_status=0", $langs->trans("BillShortStatusDraft"),2,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills'); $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills&search_status=1", $langs->trans("BillShortStatusNotPaid"),2,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills'); $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills&search_status=2", $langs->trans("BillShortStatusPaid"),2,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills'); @@ -841,7 +845,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { $langs->load("orders"); if (! empty($conf->facture->enabled)) $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=-3&billed=0", $langs->trans("MenuOrdersToBill2"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders'); - // if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire); + // if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire); } // Supplier Orders to bill @@ -851,7 +855,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { $langs->load("supplier"); $newmenu->add("/fourn/commande/list.php?leftmenu=orders&search_status=5&billed=0", $langs->trans("MenuOrdersSupplierToBill"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders'); - // if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire); + // if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire); } } @@ -861,8 +865,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { $langs->load("donations"); $newmenu->add("/don/index.php?leftmenu=donations&mainmenu=accountancy",$langs->trans("Donations"), 0, $user->rights->don->lire, '', $mainmenu, 'donations'); - if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/card.php?leftmenu=donations&action=create",$langs->trans("NewDonation"), 1, $user->rights->don->creer); - if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/list.php?leftmenu=donations",$langs->trans("List"), 1, $user->rights->don->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/card.php?leftmenu=donations&action=create",$langs->trans("NewDonation"), 1, $user->rights->don->creer); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/list.php?leftmenu=donations",$langs->trans("List"), 1, $user->rights->don->lire); // if ($leftmenu=="donations") $newmenu->add("/don/stats/index.php",$langs->trans("Statistics"), 1, $user->rights->don->lire); } @@ -878,17 +882,17 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (! empty($conf->tax->enabled)) { $newmenu->add("/compta/sociales/index.php?leftmenu=tax_social",$langs->trans("MenuSocialContributions"),1,$user->rights->tax->charges->lire); - if (empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/card.php?leftmenu=tax_social&action=create",$langs->trans("MenuNewSocialContribution"), 2, $user->rights->tax->charges->creer); - if (empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/index.php?leftmenu=tax_social",$langs->trans("List"),2,$user->rights->tax->charges->lire); - if (empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/payments.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly",$langs->trans("Payments"), 2, $user->rights->tax->charges->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/card.php?leftmenu=tax_social&action=create",$langs->trans("MenuNewSocialContribution"), 2, $user->rights->tax->charges->creer); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/index.php?leftmenu=tax_social",$langs->trans("List"),2,$user->rights->tax->charges->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/payments.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly",$langs->trans("Payments"), 2, $user->rights->tax->charges->lire); // VAT if (empty($conf->global->TAX_DISABLE_VAT_MENUS)) { $newmenu->add("/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy",$langs->trans("VAT"),1,$user->rights->tax->charges->lire, '', $mainmenu, 'tax_vat'); - if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/card.php?leftmenu=tax_vat&action=create",$langs->trans("New"),2,$user->rights->tax->charges->creer); - if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/reglement.php?leftmenu=tax_vat",$langs->trans("List"),2,$user->rights->tax->charges->lire); - if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/clients.php?leftmenu=tax_vat", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire); - if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/quadri_detail.php?leftmenu=tax_vat", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/card.php?leftmenu=tax_vat&action=create",$langs->trans("New"),2,$user->rights->tax->charges->creer); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/reglement.php?leftmenu=tax_vat",$langs->trans("List"),2,$user->rights->tax->charges->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/clients.php?leftmenu=tax_vat", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/quadri_detail.php?leftmenu=tax_vat", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire); global $mysoc; //Local Taxes @@ -896,19 +900,19 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if($mysoc->useLocalTax(1) && (isset($mysoc->localtax1_assuj) && $mysoc->localtax1_assuj=="1")) { $newmenu->add("/compta/localtax/index.php?leftmenu=tax_1_vat&mainmenu=accountancy&localTaxType=1",$langs->transcountry("LT1",$mysoc->country_code),1,$user->rights->tax->charges->lire); - if (empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/card.php?leftmenu=tax_1_vat&action=create&localTaxType=1",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer); - if (empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/reglement.php?leftmenu=tax_1_vat&localTaxType=1",$langs->trans("Payments"),2,$user->rights->tax->charges->lire); - if (empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_1_vat&localTaxType=1", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire); - if (empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_1_vat&localTaxType=1", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/card.php?leftmenu=tax_1_vat&action=create&localTaxType=1",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/reglement.php?leftmenu=tax_1_vat&localTaxType=1",$langs->trans("Payments"),2,$user->rights->tax->charges->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_1_vat&localTaxType=1", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_1_vat&localTaxType=1", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire); } //Local Taxes 2 if($mysoc->useLocalTax(2) && (isset($mysoc->localtax2_assuj) && $mysoc->localtax2_assuj=="1")) { $newmenu->add("/compta/localtax/index.php?leftmenu=tax_2_vat&mainmenu=accountancy&localTaxType=2",$langs->transcountry("LT2",$mysoc->country_code),1,$user->rights->tax->charges->lire); - if (empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/card.php?leftmenu=tax_2_vat&action=create&localTaxType=2",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer); - if (empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/reglement.php?leftmenu=tax_2_vat&localTaxType=2",$langs->trans("Payments"),2,$user->rights->tax->charges->lire); - if (empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_2_vat&localTaxType=2", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire); - if (empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_2_vat&localTaxType=2", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/card.php?leftmenu=tax_2_vat&action=create&localTaxType=2",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/reglement.php?leftmenu=tax_2_vat&localTaxType=2",$langs->trans("Payments"),2,$user->rights->tax->charges->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_2_vat&localTaxType=2", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_2_vat&localTaxType=2", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire); } } } @@ -918,8 +922,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { $langs->load("salaries"); $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy",$langs->trans("Salaries"),1,$user->rights->salaries->read, '', $mainmenu, 'tax_salary'); - if (empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/card.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->write); - if (empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->read); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/card.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->write); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->read); } // Loan @@ -927,9 +931,9 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { $langs->load("loan"); $newmenu->add("/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan'); - if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write); //if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/payment/list.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read); - if ((empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) && ! empty($conf->global->LOAN_SHOW_CALCULATOR)) $newmenu->add("/loan/calc.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->calc); + if (($usemenuhider || empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) && ! empty($conf->global->LOAN_SHOW_CALCULATOR)) $newmenu->add("/loan/calc.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->calc); } } @@ -942,17 +946,17 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/accountancy/index.php?leftmenu=accountancy",$langs->trans("MenuAccountancy"), 0, $permtoshowmenu, '', $mainmenu, 'accountancy'); // Chart of account - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/index.php?leftmenu=accountancy_admin", $langs->trans("Setup"),1,$user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin', 1); - if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/accountmodel.php?id=31&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Pcg_version"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chartmodel', 10); - if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Chartofaccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chart', 20); - if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/defaultaccounts.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuDefaultAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 40); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/index.php?leftmenu=accountancy_admin", $langs->trans("Setup"),1,$user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin', 1); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/accountmodel.php?id=31&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Pcg_version"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chartmodel', 10); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Chartofaccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chart', 20); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/defaultaccounts.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuDefaultAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 40); if (! empty($conf->facture->enabled) || ! empty($conf->fournisseur->enabled)) { - if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/dict.php?id=10&from=accountancy&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuVatAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 30); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/dict.php?id=10&from=accountancy&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuVatAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 30); } if (! empty($conf->tax->enabled)) { - if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/dict.php?id=7&from=accountancy&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuTaxAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 30); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/dict.php?id=7&from=accountancy&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuTaxAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 30); } if (! empty($conf->expensereport->enabled)) { @@ -960,38 +964,38 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu } if (! empty($conf->loan->enabled)) { - if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/loan.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuLoanAccounts"), 2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_loan', 45); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/loan.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuLoanAccounts"), 2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_loan', 45); } /* not required yet, already supported by default account if (! empty($conf->don->enabled)) { if (preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/don/admin/donation.php?from=accountancy&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuDonationAccounts"), 2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_donation', 47); }*/ - if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/productaccount.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuProductsAccounts"), 2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_product', 50); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/productaccount.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuProductsAccounts"), 2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_product', 50); // Binding - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/customer/index.php?leftmenu=accountancy_dispatch_customer&mainmenu=accountancy",$langs->trans("CustomersVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_customer'); - if (empty($leftmenu) || preg_match('/accountancy_dispatch_customer/',$leftmenu)) $newmenu->add("/accountancy/customer/list.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_customer",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write); - if (empty($leftmenu) || preg_match('/accountancy_dispatch_customer/',$leftmenu)) $newmenu->add("/accountancy/customer/lines.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_customer",$langs->trans("Binded"),2,$user->rights->accounting->bind->write); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/customer/index.php?leftmenu=accountancy_dispatch_customer&mainmenu=accountancy",$langs->trans("CustomersVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_customer'); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_customer/',$leftmenu)) $newmenu->add("/accountancy/customer/list.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_customer",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_customer/',$leftmenu)) $newmenu->add("/accountancy/customer/lines.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_customer",$langs->trans("Binded"),2,$user->rights->accounting->bind->write); if (! empty($conf->supplier_invoice->enabled)) { - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/supplier/index.php?leftmenu=accountancy_dispatch_supplier&mainmenu=accountancy",$langs->trans("SuppliersVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_supplier'); - if (empty($leftmenu) || preg_match('/accountancy_dispatch_supplier/',$leftmenu)) $newmenu->add("/accountancy/supplier/list.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_supplier",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write); - if (empty($leftmenu) || preg_match('/accountancy_dispatch_supplier/',$leftmenu)) $newmenu->add("/accountancy/supplier/lines.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_supplier",$langs->trans("Binded"),2,$user->rights->accounting->bind->write); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/supplier/index.php?leftmenu=accountancy_dispatch_supplier&mainmenu=accountancy",$langs->trans("SuppliersVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_supplier'); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_supplier/',$leftmenu)) $newmenu->add("/accountancy/supplier/list.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_supplier",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_supplier/',$leftmenu)) $newmenu->add("/accountancy/supplier/lines.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_supplier",$langs->trans("Binded"),2,$user->rights->accounting->bind->write); } if (! empty($conf->expensereport->enabled)) { - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/expensereport/index.php?leftmenu=accountancy_dispatch_expensereport&mainmenu=accountancy",$langs->trans("ExpenseReportsVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_expensereport'); - if (empty($leftmenu) || preg_match('/accountancy_dispatch_expensereport/',$leftmenu)) $newmenu->add("/accountancy/expensereport/list.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_expensereport",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write); - if (empty($leftmenu) || preg_match('/accountancy_dispatch_expensereport/',$leftmenu)) $newmenu->add("/accountancy/expensereport/lines.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_expensereport",$langs->trans("Binded"),2,$user->rights->accounting->bind->write); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/expensereport/index.php?leftmenu=accountancy_dispatch_expensereport&mainmenu=accountancy",$langs->trans("ExpenseReportsVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_expensereport'); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_expensereport/',$leftmenu)) $newmenu->add("/accountancy/expensereport/list.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_expensereport",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_expensereport/',$leftmenu)) $newmenu->add("/accountancy/expensereport/lines.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_expensereport",$langs->trans("Binded"),2,$user->rights->accounting->bind->write); } // Journals if(! empty($conf->accounting->enabled) && ! empty($user->rights->accounting->comptarapport->lire) && $mainmenu == 'accountancy') { - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add('',$langs->trans("Journalization"),1,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add('',$langs->trans("Journalization"),1,$user->rights->accounting->comptarapport->lire); $sql = "SELECT rowid, label, accountancy_journal"; $sql.= " FROM ".MAIN_DB_PREFIX."bank_account"; @@ -1009,7 +1013,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu while ($i < $numr) { $objp = $db->fetch_object($resql); - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add('/accountancy/journal/bankjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_account='.$objp->rowid,$langs->trans("Journal").' - '.dol_trunc($objp->label,10),2,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add('/accountancy/journal/bankjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_account='.$objp->rowid,$langs->trans("Journal").' - '.dol_trunc($objp->label,10),2,$user->rights->accounting->comptarapport->lire); $i++; } } @@ -1017,34 +1021,34 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $db->free($resql); // Add other journal - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/sellsjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal",$langs->trans("SellsJournal"),2,$user->rights->accounting->comptarapport->lire); - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/purchasesjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal",$langs->trans("PurchasesJournal"),2,$user->rights->accounting->comptarapport->lire); - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/expensereportsjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal",$langs->trans("ExpenseReportsJournal"),2,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/sellsjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal",$langs->trans("SellsJournal"),2,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/purchasesjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal",$langs->trans("PurchasesJournal"),2,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/expensereportsjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal",$langs->trans("ExpenseReportsJournal"),2,$user->rights->accounting->comptarapport->lire); } // General Ledger - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/bookkeeping/list.php?mainmenu=accountancy&leftmenu=accountancy_generalledger",$langs->trans("Bookkeeping"),1,$user->rights->accounting->mouvements->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/bookkeeping/list.php?mainmenu=accountancy&leftmenu=accountancy_generalledger",$langs->trans("Bookkeeping"),1,$user->rights->accounting->mouvements->lire); // Balance - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/bookkeeping/balance.php?mainmenu=accountancy&leftmenu=accountancy_balance",$langs->trans("AccountBalance"),1,$user->rights->accounting->mouvements->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/bookkeeping/balance.php?mainmenu=accountancy&leftmenu=accountancy_balance",$langs->trans("AccountBalance"),1,$user->rights->accounting->mouvements->lire); // Reports $langs->load("compta"); - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/report/result.php?mainmenu=accountancy&leftmenu=accountancy_report",$langs->trans("Reportings"),1,$user->rights->accounting->comptarapport->lire, '', $mainmenu, 'ca'); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/report/result.php?mainmenu=accountancy&leftmenu=accountancy_report",$langs->trans("Reportings"),1,$user->rights->accounting->comptarapport->lire, '', $mainmenu, 'ca'); - if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/accountancy/report/result.php?leftmenu=accountancy_report",$langs->trans("ReportInOut"),2,$user->rights->accounting->comptarapport->lire); - if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/resultat/index.php?leftmenu=accountancy_report",$langs->trans("ByExpenseIncome"),3,$user->rights->accounting->comptarapport->lire); - if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/resultat/clientfourn.php?leftmenu=accountancy_report",$langs->trans("ByCompanies"),3,$user->rights->accounting->comptarapport->lire); - if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/index.php?leftmenu=accountancy_report",$langs->trans("ReportTurnover"),2,$user->rights->accounting->comptarapport->lire); - if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/casoc.php?leftmenu=accountancy_report",$langs->trans("ByCompanies"),3,$user->rights->accounting->comptarapport->lire); - if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/cabyuser.php?leftmenu=accountancy_report",$langs->trans("ByUsers"),3,$user->rights->accounting->comptarapport->lire); - if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/cabyprodserv.php?leftmenu=accountancy_report", $langs->trans("ByProductsAndServices"),3,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/accountancy/report/result.php?leftmenu=accountancy_report",$langs->trans("ReportInOut"),2,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/resultat/index.php?leftmenu=accountancy_report",$langs->trans("ByExpenseIncome"),3,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/resultat/clientfourn.php?leftmenu=accountancy_report",$langs->trans("ByCompanies"),3,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/index.php?leftmenu=accountancy_report",$langs->trans("ReportTurnover"),2,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/casoc.php?leftmenu=accountancy_report",$langs->trans("ByCompanies"),3,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/cabyuser.php?leftmenu=accountancy_report",$langs->trans("ByUsers"),3,$user->rights->accounting->comptarapport->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/cabyprodserv.php?leftmenu=accountancy_report", $langs->trans("ByProductsAndServices"),3,$user->rights->accounting->comptarapport->lire); // Fiscal year if ($conf->global->MAIN_FEATURES_LEVEL > 0) // Not yet used. In a future will lock some periods. { - if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/admin/fiscalyear.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("FiscalPeriod"),1,$user->rights->accounting->fiscalyear, '', $mainmenu, 'fiscalyear'); + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/admin/fiscalyear.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("FiscalPeriod"),1,$user->rights->accounting->fiscalyear, '', $mainmenu, 'fiscalyear'); } } @@ -1056,29 +1060,29 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu // Bilan, resultats $newmenu->add("/compta/resultat/index.php?leftmenu=report&mainmenu=accountancy",$langs->trans("Reportings"),0,$user->rights->compta->resultat->lire, '', $mainmenu, 'ca'); - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/index.php?leftmenu=report",$langs->trans("ReportInOut"),1,$user->rights->compta->resultat->lire); - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/clientfourn.php?leftmenu=report",$langs->trans("ByCompanies"),2,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/index.php?leftmenu=report",$langs->trans("ReportInOut"),1,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/clientfourn.php?leftmenu=report",$langs->trans("ByCompanies"),2,$user->rights->compta->resultat->lire); /* On verra ca avec module compabilite expert - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/compteres.php?leftmenu=report","Compte de resultat",2,$user->rights->compta->resultat->lire); - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/bilan.php?leftmenu=report","Bilan",2,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/compteres.php?leftmenu=report","Compte de resultat",2,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/bilan.php?leftmenu=report","Bilan",2,$user->rights->compta->resultat->lire); */ - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/index.php?leftmenu=report",$langs->trans("ReportTurnover"),1,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/index.php?leftmenu=report",$langs->trans("ReportTurnover"),1,$user->rights->compta->resultat->lire); /* - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cumul.php?leftmenu=report","Cumule",2,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cumul.php?leftmenu=report","Cumule",2,$user->rights->compta->resultat->lire); if (! empty($conf->propal->enabled)) { - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/prev.php?leftmenu=report","Previsionnel",2,$user->rights->compta->resultat->lire); - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/comp.php?leftmenu=report","Transforme",2,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/prev.php?leftmenu=report","Previsionnel",2,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/comp.php?leftmenu=report","Transforme",2,$user->rights->compta->resultat->lire); } */ - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/casoc.php?leftmenu=report",$langs->trans("ByCompanies"),2,$user->rights->compta->resultat->lire); - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cabyuser.php?leftmenu=report",$langs->trans("ByUsers"),2,$user->rights->compta->resultat->lire); - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cabyprodserv.php?leftmenu=report", $langs->trans("ByProductsAndServices"),2,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/casoc.php?leftmenu=report",$langs->trans("ByCompanies"),2,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cabyuser.php?leftmenu=report",$langs->trans("ByUsers"),2,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cabyprodserv.php?leftmenu=report", $langs->trans("ByProductsAndServices"),2,$user->rights->compta->resultat->lire); // Journaux //if ($leftmenu=="ca") $newmenu->add("/compta/journaux/index.php?leftmenu=ca",$langs->trans("Journaux"),1,$user->rights->compta->resultat->lire||$user->rights->accounting->comptarapport->lire); - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/journal/sellsjournal.php?leftmenu=report",$langs->trans("SellsJournal"),1,$user->rights->compta->resultat->lire); - if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/journal/purchasesjournal.php?leftmenu=report",$langs->trans("PurchasesJournal"),1,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/journal/sellsjournal.php?leftmenu=report",$langs->trans("SellsJournal"),1,$user->rights->compta->resultat->lire); + if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/journal/purchasesjournal.php?leftmenu=report",$langs->trans("PurchasesJournal"),1,$user->rights->compta->resultat->lire); } } @@ -1118,17 +1122,17 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { $newmenu->add("/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank",$langs->trans("StandingOrders"),0,$user->rights->prelevement->bons->lire, '', $mainmenu, 'withdraw'); - //if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/demandes.php?status=0&mainmenu=bank",$langs->trans("StandingOrderToProcess"),1,$user->rights->prelevement->bons->lire); + //if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/demandes.php?status=0&mainmenu=bank",$langs->trans("StandingOrderToProcess"),1,$user->rights->prelevement->bons->lire); if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/create.php?mainmenu=bank",$langs->trans("NewStandingOrder"),1,$user->rights->prelevement->bons->creer); - if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/bons.php?mainmenu=bank",$langs->trans("WithdrawalsReceipts"),1,$user->rights->prelevement->bons->lire); - if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/list.php?mainmenu=bank",$langs->trans("WithdrawalsLines"),1,$user->rights->prelevement->bons->lire); - if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/rejets.php?mainmenu=bank",$langs->trans("Rejects"),1,$user->rights->prelevement->bons->lire); - if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/stats.php?mainmenu=bank",$langs->trans("Statistics"),1,$user->rights->prelevement->bons->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/bons.php?mainmenu=bank",$langs->trans("WithdrawalsReceipts"),1,$user->rights->prelevement->bons->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/list.php?mainmenu=bank",$langs->trans("WithdrawalsLines"),1,$user->rights->prelevement->bons->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/rejets.php?mainmenu=bank",$langs->trans("Rejects"),1,$user->rights->prelevement->bons->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/stats.php?mainmenu=bank",$langs->trans("Statistics"),1,$user->rights->prelevement->bons->lire); - //if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/config.php",$langs->trans("Setup"),1,$user->rights->prelevement->bons->configurer); + //if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/config.php",$langs->trans("Setup"),1,$user->rights->prelevement->bons->configurer); } // Gestion cheques @@ -1186,7 +1190,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $langs->load("categories"); $newmenu->add("/categories/index.php?leftmenu=cat&type=0", $langs->trans("Categories"), 0, $user->rights->categorie->lire, '', $mainmenu, 'cat'); $newmenu->add("/categories/card.php?action=create&type=0", $langs->trans("NewCategory"), 1, $user->rights->categorie->creer); - //if (empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire); + //if ($usemenuhider || empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire); } // Warehouse @@ -1209,9 +1213,9 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/expedition/index.php?leftmenu=sendings", $langs->trans("Shipments"), 0, $user->rights->expedition->lire, '', $mainmenu, 'sendings'); $newmenu->add("/expedition/card.php?action=create2&leftmenu=sendings", $langs->trans("NewSending"), 1, $user->rights->expedition->creer); $newmenu->add("/expedition/list.php?leftmenu=sendings", $langs->trans("List"), 1, $user->rights->expedition->lire); - if (empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=0", $langs->trans("StatusSendingDraftShort"), 2, $user->rights->expedition->lire); - if (empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=1", $langs->trans("StatusSendingValidatedShort"), 2, $user->rights->expedition->lire); - if (empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=2", $langs->trans("StatusSendingProcessedShort"), 2, $user->rights->expedition->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=0", $langs->trans("StatusSendingDraftShort"), 2, $user->rights->expedition->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=1", $langs->trans("StatusSendingValidatedShort"), 2, $user->rights->expedition->lire); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=2", $langs->trans("StatusSendingProcessedShort"), 2, $user->rights->expedition->lire); $newmenu->add("/expedition/stats/index.php?leftmenu=sendings", $langs->trans("Statistics"), 1, $user->rights->expedition->lire); } @@ -1258,7 +1262,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $langs->load("categories"); $newmenu->add("/categories/index.php?leftmenu=cat&type=6", $langs->trans("Categories"), 0, $user->rights->categorie->lire, '', $mainmenu, 'cat'); $newmenu->add("/categories/card.php?action=create&type=6", $langs->trans("NewCategory"), 1, $user->rights->categorie->creer); - //if (empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire); + //if ($usemenuhider || empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire); } } } @@ -1364,7 +1368,9 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/adherents/list.php?leftmenu=members&statut=1&filter=outofdate",$langs->trans("MenuMembersNotUpToDate"),2,$user->rights->adherent->lire); $newmenu->add("/adherents/list.php?leftmenu=members&statut=0",$langs->trans("MenuMembersResiliated"),2,$user->rights->adherent->lire); $newmenu->add("/adherents/stats/index.php?leftmenu=members",$langs->trans("MenuMembersStats"),1,$user->rights->adherent->lire); - + if (! empty($conf->global->MEMBER_LINK_TO_HTPASSWDFILE) && ($usemenuhider || empty($leftmenu) || $leftmenu=="export")) $newmenu->add("/adherents/htpasswd.php?leftmenu=export",$langs->trans("Filehtpasswd"),1,$user->rights->adherent->export); + if ($usemenuhider || empty($leftmenu) || $leftmenu=="export") $newmenu->add("/adherents/cartes/carte.php?leftmenu=export",$langs->trans("MembersCards"),1,$user->rights->adherent->export); + $newmenu->add("/adherents/index.php?leftmenu=members&mainmenu=members",$langs->trans("Subscriptions"),0,$user->rights->adherent->cotisation->lire); $newmenu->add("/adherents/list.php?leftmenu=members&statut=-1,1&mainmenu=members",$langs->trans("NewSubscription"),1,$user->rights->adherent->cotisation->creer); $newmenu->add("/adherents/subscription/list.php?leftmenu=members",$langs->trans("List"),1,$user->rights->adherent->cotisation->lire); @@ -1376,13 +1382,11 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $langs->load("categories"); $newmenu->add("/categories/index.php?leftmenu=cat&type=3", $langs->trans("Categories"), 0, $user->rights->categorie->lire, '', $mainmenu, 'cat'); $newmenu->add("/categories/card.php?action=create&type=3", $langs->trans("NewCategory"), 1, $user->rights->categorie->creer); - //if (empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire); + //if ($usemenuhider || empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire); } - $newmenu->add("/adherents/index.php?leftmenu=export&mainmenu=members",$langs->trans("Exports"),0,$user->rights->adherent->export, '', $mainmenu, 'export'); - if (! empty($conf->export->enabled) && (empty($leftmenu) || $leftmenu=="export")) $newmenu->add("/exports/index.php?leftmenu=export",$langs->trans("Datas"),1,$user->rights->adherent->export); - if (empty($leftmenu) || $leftmenu=="export") $newmenu->add("/adherents/htpasswd.php?leftmenu=export",$langs->trans("Filehtpasswd"),1,$user->rights->adherent->export); - if (empty($leftmenu) || $leftmenu=="export") $newmenu->add("/adherents/cartes/carte.php?leftmenu=export",$langs->trans("MembersCards"),1,$user->rights->adherent->export); + //$newmenu->add("/adherents/index.php?leftmenu=export&mainmenu=members",$langs->trans("Tools"),0,$user->rights->adherent->export, '', $mainmenu, 'export'); + //if (! empty($conf->export->enabled) && ($usemenuhider || empty($leftmenu) || $leftmenu=="export")) $newmenu->add("/exports/index.php?leftmenu=export",$langs->trans("Datas"),1,$user->rights->adherent->export); // Type $newmenu->add("/adherents/type.php?leftmenu=setup&mainmenu=members",$langs->trans("MembersTypes"),0,$user->rights->adherent->configurer, '', $mainmenu, 'setup'); diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index 7420e3474827d93dbef80b2c09f3a7672a832085..dab925eef1df6be114e21674049a1676da5ee743 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -580,8 +580,6 @@ class pdf_rouget extends ModelePdfExpedition $this->error=$langs->transnoentities("ErrorConstantNotDefined","EXP_OUTPUTDIR"); return 0; } - $this->error=$langs->transnoentities("ErrorUnknown"); - return 0; // Erreur par defaut } /** @@ -790,7 +788,7 @@ class pdf_rouget extends ModelePdfExpedition // Show Draft Watermark if($object->statut==0 && (! empty($conf->global->SHIPPING_DRAFT_WATERMARK)) ) { - pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->SHIPPING_DRAFT_WATERMARK); + pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->SHIPPING_DRAFT_WATERMARK); } //Prepare la suite @@ -861,11 +859,11 @@ class pdf_rouget extends ModelePdfExpedition $pdf->SetTextColor(0,0,60); $title=$outputlangs->transnoentities("SendingSheet"); $pdf->MultiCell($w, 4, $title, '', 'R'); - $posy+=1; $pdf->SetFont('','', $default_font_size + 1); - $posy+=4; + $posy+=5; + $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); $pdf->MultiCell($w, 4, $outputlangs->transnoentities("RefSending") ." : ".$object->ref, '', 'R'); @@ -873,10 +871,10 @@ class pdf_rouget extends ModelePdfExpedition // Date planned delivery if (! empty($object->date_delivery)) { - $posy+=4; - $pdf->SetXY($posx,$posy); - $pdf->SetTextColor(0,0,60); - $pdf->MultiCell($w, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"day",false,$outputlangs,true), '', 'R'); + $posy+=4; + $pdf->SetXY($posx,$posy); + $pdf->SetTextColor(0,0,60); + $pdf->MultiCell($w, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"day",false,$outputlangs,true), '', 'R'); } if (! empty($object->thirdparty->code_client)) @@ -889,11 +887,10 @@ class pdf_rouget extends ModelePdfExpedition $pdf->SetFont('','', $default_font_size + 3); - $Yoff=25; - - // Add list of linked orders + $Yoff=25; - $origin = $object->origin; + // Add list of linked orders + $origin = $object->origin; $origin_id = $object->origin_id; // TODO move to external function diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 0c57cf644bc029195583e86920a7535b15109ffa..1701f82c47b274447150e2c42bf85d18b9cac142 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -691,8 +691,6 @@ class pdf_crabe extends ModelePDFFactures $this->error=$langs->transnoentities("ErrorConstantNotDefined","FAC_OUTPUTDIR"); return 0; } - $this->error=$langs->transnoentities("ErrorUnknown"); - return 0; // Erreur par defaut } diff --git a/htdocs/core/modules/modAccounting.class.php b/htdocs/core/modules/modAccounting.class.php index 4316bf6c13efc09543c2cc61670c085dc8993628..0e3dedb0109fe451e6526cdfb60e161de35a38bf 100644 --- a/htdocs/core/modules/modAccounting.class.php +++ b/htdocs/core/modules/modAccounting.class.php @@ -143,11 +143,6 @@ class modAccounting extends DolibarrModules "chaine", "" ); - $this->const[12] = array( - "ACCOUNTING_LIMIT_LIST_VENTILATION", - "chaine", - "50" - ); $this->const[13] = array( "ACCOUNTING_LIST_SORT_VENTILATION_TODO", "yesno", diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php index ea0456bc3ff8f2bf8c6ba1d5b425736b5d2e5fd2..0a4f5d98c46f004cb1782bfc95437e7fc4847b90 100644 --- a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php +++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php @@ -2,6 +2,7 @@ /* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com> + * Copyright (C) 2016 Alexandre Spangaro <aspangaro@zendsi.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,14 +22,15 @@ /** * \file htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php * \ingroup supplier invoice - * \brief File containing the Cactus Class of numbering models of suppliers invoices references + * \brief File containing class for the numbering module Cactus */ require_once DOL_DOCUMENT_ROOT .'/core/modules/supplier_invoice/modules_facturefournisseur.php'; /** - * Cactus Class of numbering models of suppliers invoices references + * \class mod_facture_fournisseur_cactus + * \brief Cactus Class of numbering models of suppliers invoices references */ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices { @@ -36,6 +38,8 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices var $error = ''; var $nom = 'Cactus'; var $prefixinvoice='SI'; + var $prefixcreditnote='SA'; + var $prefixdeposit='SD'; /** @@ -46,7 +50,8 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices function info() { global $langs; - return $langs->trans("SimpleNumRefModelDesc",$this->prefixinvoice); + $langs->load("bills"); + return $langs->trans("CactusNumRefModelDesc1",$this->prefixinvoice,$this->prefixcreditnote,$this->prefixdeposit); } @@ -61,45 +66,90 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices } - /** - * Tests if the numbers already in force in the database do not cause conflicts that would prevent this numbering. - * - * @return boolean false if conflict, true if ok - */ - function canBeActivated() - { - global $conf,$langs,$db; + /** + * Tests if the numbers already in force in the database do not cause conflicts that would prevent this numbering. + * + * @return boolean false if conflict, true if ok + */ + function canBeActivated() + { + global $conf,$langs,$db; + + $langs->load("bills"); - $siyymm=''; $max=''; + // Check invoice num + $siyymm=''; $max=''; $posindice=8; $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; - $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn"; + $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn"; $sql.= " WHERE ref LIKE '".$this->prefixinvoice."____-%'"; - $sql.= " AND entity = ".$conf->entity; - $resql=$db->query($sql); - if ($resql) - { - $row = $db->fetch_row($resql); - if ($row) { $siyymm = substr($row[0],0,6); $max=$row[0]; } - } - if (! $siyymm || preg_match('/'.$this->prefixinvoice.'[0-9][0-9][0-9][0-9]/i',$siyymm)) - { - return true; - } - else - { + $sql.= " AND entity = ".$conf->entity; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) { $siyymm = substr($row[0],0,6); $max=$row[0]; } + } + if (! $siyymm || preg_match('/'.$this->prefixinvoice.'[0-9][0-9][0-9][0-9]/i',$siyymm)) + { + return true; + } + else + { $langs->load("errors"); $this->error=$langs->trans('ErrorNumRefModel',$max); - return false; - } + return false; + } + + // Check credit note num + $siyymm=''; + + $posindice=8; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL + $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn"; + $sql.= " WHERE ref LIKE '".$this->prefixcreditnote."____-%'"; + $sql.= " AND entity = ".$conf->entity; + + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) { $siyymm = substr($row[0],0,6); $max=$row[0]; } + } + if ($siyymm && ! preg_match('/'.$this->prefixcreditnote.'[0-9][0-9][0-9][0-9]/i',$siyymm)) + { + $this->error=$langs->trans('ErrorNumRefModel',$max); + return false; + } + + // Check deposit num + $siyymm=''; + + $posindice=8; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL + $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn"; + $sql.= " WHERE ref LIKE '".$this->prefixdeposit."____-%'"; + $sql.= " AND entity = ".$conf->entity; + + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) { $siyymm = substr($row[0],0,6); $max=$row[0]; } + } + if ($siyymm && ! preg_match('/'.$this->prefixdeposit.'[0-9][0-9][0-9][0-9]/i',$siyymm)) + { + $this->error=$langs->trans('ErrorNumRefModel',$max); + return false; + } } /** * Return next value * * @param Societe $objsoc Object third party - * @param Object $object Object + * @param Object $object Object invoice * @param string $mode 'next' for next value or 'last' for last value * @return string Value if OK, 0 if KO */ @@ -108,6 +158,7 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices global $db,$conf; if ($object->type == 2) $prefix=$this->prefixcreditnote; + else if ($facture->type == 3) $prefix=$this->prefixdeposit; else $prefix=$this->prefixinvoice; // D'abord on recupere la valeur max diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php index ba31d9798640fa7cb5337c377c390ade9017db36..b7a3801a9cda49dd7712053325d677804d35dc9c 100644 --- a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php +++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php @@ -3,7 +3,8 @@ * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com> - * Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2016 Alexandre Spangaro <aspangaro@zendsi.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -59,6 +60,9 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices $texte.= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; $texte.= '<input type="hidden" name="action" value="updateMask">'; $texte.= '<input type="hidden" name="maskconstinvoice" value="SUPPLIER_INVOICE_TULIP_MASK">'; + $texte.= '<input type="hidden" name="maskconstreplacement" value="SUPPLIER_REPLACEMENT_TULIP_MASK">'; + $texte.= '<input type="hidden" name="maskconstcredit" value="SUPPLIER_CREDIT_TULIP_MASK">'; + $texte.= '<input type="hidden" name="maskconstdeposit" value="SUPPLIER_DEPOSIT_TULIP_MASK">'; $texte.= '<table class="nobordernopadding" width="100%">'; $tooltip=$langs->trans("GenericMaskCodes",$langs->transnoentities("Invoice"),$langs->transnoentities("Invoice")); @@ -68,13 +72,28 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices $tooltip.=$langs->trans("GenericMaskCodes5"); // Parametrage du prefix - $texte.= '<tr><td>'.$langs->trans("Mask").':</td>'; + $texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceStandard").'):</td>'; $texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskinvoice" value="'.$conf->global->SUPPLIER_INVOICE_TULIP_MASK.'">',$tooltip,1,1).'</td>'; $texte.= '<td align="left" rowspan="2"> <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>'; $texte.= '</tr>'; + // Parametrage du prefix des replacement + $texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceReplacement").'):</td>'; + $texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskreplacement" value="'.$conf->global->SUPPLIER_REPLACEMENT_TULIP_MASK.'">',$tooltip,1,1).'</td>'; + $texte.= '</tr>'; + + // Parametrage du prefix des avoirs + $texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceAvoir").'):</td>'; + $texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskcredit" value="'.$conf->global->SUPPLIER_CREDIT_TULIP_MASK.'">',$tooltip,1,1).'</td>'; + $texte.= '</tr>'; + + // Parametrage du prefix des acomptes + $texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceDeposit").'):</td>'; + $texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskdeposit" value="'.$conf->global->SUPPLIER_DEPOSIT_TULIP_MASK.'">',$tooltip,1,1).'</td>'; + $texte.= '</tr>'; + $texte.= '</table>'; $texte.= '</form>'; @@ -106,7 +125,7 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices * Return next value * * @param Societe $objsoc Object third party - * @param Object $object Object + * @param Object $object Object invoice * @param string $mode 'next' for next value or 'last' for last value * @return string Value if OK, 0 if KO */ @@ -116,16 +135,26 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices require_once DOL_DOCUMENT_ROOT .'/core/lib/functions2.lib.php'; - // On defini critere recherche compteur - $mask=$conf->global->SUPPLIER_INVOICE_TULIP_MASK; - + // Get Mask value + $mask = ''; + if (is_object($object) && $object->type == 1) + { + $mask=$conf->global->SUPPLIER_REPLACEMENT_TULIP_MASK; + if (! $mask) + { + $mask=$conf->global->SUPPLIER_INVOICE_TULIP_MASK; + } + } + else if (is_object($object) && $object->type == 2) $mask=$conf->global->SUPPLIER_CREDIT_TULIP_MASK; + else if (is_object($object) && $object->type == 3) $mask=$conf->global->SUPPLIER_DEPOSIT_TULIP_MASK; + else $mask=$conf->global->SUPPLIER_INVOICE_TULIP_MASK; if (! $mask) { $this->error='NotConfigured'; return 0; } - //Supplier invoices take invoice date instead of creation date for the mask + // Supplier invoices take invoice date instead of creation date for the mask $numFinal=get_next_value($db,$mask,'facture_fourn','ref','',$objsoc,$object->date); return $numFinal; diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php index 6788a24baaab701332e0a693c9465a74b38ba60a..b6c43b10ce96e69a11c2d0aa6893ca5fcbc63206 100644 --- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php @@ -129,10 +129,11 @@ elseif (($type== 'sellist') || ($type == 'chkbxlst') || ($type == 'link') ) <?php // Define list of possible type transition $typewecanchangeinto=array( - 'varchar'=>array('varchar', 'phone', 'mail', 'select'), - 'mail'=>array('varchar', 'phone', 'mail', 'select'), - 'phone'=>array('varchar', 'phone', 'mail', 'select'), - 'select'=>array('varchar', 'phone', 'mail', 'select') + 'varchar'=>array('varchar', 'phone', 'mail', 'url', 'select'), + 'mail'=>array('varchar', 'phone', 'mail', 'url', 'select'), + 'url'=>array('varchar', 'phone', 'mail', 'url', 'select'), + 'phone'=>array('varchar', 'phone', 'mail', 'url', 'select'), + 'select'=>array('varchar', 'phone', 'mail', 'url', 'select') ); if (in_array($type, array_keys($typewecanchangeinto))) { diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php index 28a02fcd38a619b7f23d7086243c297bab2e62e8..845bc30ce13b5c839ec5b2fd14f406d52000b9fc 100644 --- a/htdocs/core/tpl/contacts.tpl.php +++ b/htdocs/core/tpl/contacts.tpl.php @@ -110,11 +110,10 @@ if ($permission) { <div class="tagtd nowrap maxwidthonsmartphone"> <?php $selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$object->socid; ?> <?php - // add company icon for direct link - if ($selectedCompany && empty($conf->dol_use_jmobile)) + // add company icon before select list + if ($selectedCompany) { - $companystatic->fetch($selectedCompany); - echo $companystatic->getNomUrl(2, '', 0, 1); + echo img_object('', 'company', 'class="hideonsmartphone"'); } ?> <?php $selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany', '', 0); ?> diff --git a/htdocs/core/tpl/notes.tpl.php b/htdocs/core/tpl/notes.tpl.php index bc7cf44ce66eedcdc7bef1ef0ac236752e30bb34..c971a49148fa612f3ba82ca81775798b30bb5a21 100644 --- a/htdocs/core/tpl/notes.tpl.php +++ b/htdocs/core/tpl/notes.tpl.php @@ -63,8 +63,8 @@ elseif ($module == 'shipping') { $permission=$user->rights->expedition->cr elseif ($module == 'product') { $permission=$user->rights->produit->creer;} //else dol_print_error('','Bad value '.$module.' for param module'); -if (! empty($conf->global->FCKEDITOR_ENABLE_SOCIETE)) $typeofdata='ckeditor:dolibarr_notes:100%:200::1:12:100'; // Rem: This var is for all notes, not only thirdparties note. -else $typeofdata='textarea:12:100'; +if (! empty($conf->global->FCKEDITOR_ENABLE_SOCIETE)) $typeofdata='ckeditor:dolibarr_notes:100%:200::1:12:95%'; // Rem: This var is for all notes, not only thirdparties note. +else $typeofdata='textarea:12:95%'; ?> @@ -72,14 +72,14 @@ else $typeofdata='textarea:12:100'; <div class="tagtable border table-border centpercent"> <?php if ($module != 'product') { // No public note yet on products ?> <div class="tagtr table-border-row"> - <div class="tagtd table-key-border-col<?php echo (empty($cssclass)?'':' '.$cssclass); ?>"<?php echo ($colwidth ? ' style="width: '.$colwidth.'%"' : ''); ?>><?php echo $form->editfieldkey("NotePublic", $note_public, $value_public, $object, $permission, $typeofdata, $moreparam); ?></div> - <div class="tagtd table-val-border-col"><?php echo $form->editfieldval("NotePublic", $note_public, $value_public, $object, $permission, $typeofdata, '', null, null, $moreparam); ?></div> + <div class="tagtd table-key-border-col<?php echo (empty($cssclass)?'':' '.$cssclass); ?>"<?php echo ($colwidth ? ' style="width: '.$colwidth.'%"' : ''); ?>><?php echo $form->editfieldkey("NotePublic", $note_public, $value_public, $object, $permission, $typeofdata, $moreparam, '', 0); ?></div> + <div class="tagtd table-val-border-col"><?php echo $form->editfieldval("NotePublic", $note_public, $value_public, $object, $permission, $typeofdata, '', null, null, $moreparam, 1); ?></div> </div> <?php } ?> <?php if (empty($user->societe_id)) { ?> <div class="tagtr table-border-row"> - <div class="tagtd table-key-border-col<?php echo (empty($cssclass)?'':' '.$cssclass); ?>"<?php echo ($colwidth ? ' style="width: '.$colwidth.'%"' : ''); ?>><?php echo $form->editfieldkey("NotePrivate", $note_private, $value_private, $object, $permission, $typeofdata, $moreparam); ?></div> - <div class="tagtd table-val-border-col"><?php echo $form->editfieldval("NotePrivate", $note_private, $value_private, $object, $permission, $typeofdata, '', null, null, $moreparam); ?></div> + <div class="tagtd table-key-border-col<?php echo (empty($cssclass)?'':' '.$cssclass); ?>"<?php echo ($colwidth ? ' style="width: '.$colwidth.'%"' : ''); ?>><?php echo $form->editfieldkey("NotePrivate", $note_private, $value_private, $object, $permission, $typeofdata, $moreparam, '', 0); ?></div> + <div class="tagtd table-val-border-col"><?php echo $form->editfieldval("NotePrivate", $note_private, $value_private, $object, $permission, $typeofdata, '', null, null, $moreparam, 1); ?></div> </div> <?php } ?> </div> diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php old mode 100644 new mode 100755 index 3e29c9f23e8ba02a27496899fccfc13f8f858dde..d38a3d761e4248cabcca34791f697ac58694aca8 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -36,7 +36,7 @@ * $type, $text, $description, $line */ -global $forceall, $senderissupplier, $inputalsopricewithtax, $usemargins; +global $forceall, $senderissupplier, $inputalsopricewithtax, $usemargins, $outputalsopricetotalwithtax; $usemargins=0; if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) $usemargins=1; @@ -45,6 +45,7 @@ if (empty($dateSelector)) $dateSelector=0; if (empty($forceall)) $forceall=0; if (empty($senderissupplier)) $senderissupplier=0; if (empty($inputalsopricewithtax)) $inputalsopricewithtax=0; +if (empty($outputalsopricetotalwithtax)) $outputalsopricetotalwithtax=0; if (empty($usemargins)) $usemargins=0; ?> <?php $coldisplay=0; ?> @@ -203,6 +204,10 @@ if (empty($usemargins)) $usemargins=0; <td align="right" class="linecolutotalht_currency nowrap"><?php $coldisplay++; ?><?php echo price($line->multicurrency_total_ht); ?></td> <?php } ?> <?php } ?> + <?php if ($outputalsopricetotalwithtax) { ?> + <td align="right" class="liencolht nowrap"><?php $coldisplay++; ?><?php echo price($line->total_ttc); ?></td> + <?php } ?> + <?php if ($this->statut == 0 && ($object_rights->creer)) { ?> diff --git a/htdocs/don/document.php b/htdocs/don/document.php index 35df6bb338a32a78b641934dd4b8486c5dea479a..ff25ca2828dd4d3f6cf0a2f64dc62c8bd9be45fc 100644 --- a/htdocs/don/document.php +++ b/htdocs/don/document.php @@ -107,7 +107,6 @@ if ($object->id) $totalsize+=$file['size']; } - $linkback = '<a href="'.DOL_URL_ROOT.'/don/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>'; $morehtmlref='<div class="refidno">'; @@ -153,7 +152,6 @@ if ($object->id) print '<table class="border" width="100%">'; - // Ref /* print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'; diff --git a/htdocs/don/index.php b/htdocs/don/index.php index 9894de3a2b5583491dc0b29b42f3ebd03f33173b..5e4b2966051e9a649fbf82de55d24b4418df4596 100644 --- a/htdocs/don/index.php +++ b/htdocs/don/index.php @@ -96,7 +96,7 @@ if (count($listofsearchfields)) { if ($i == 0) print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("Search").'</td></tr>'; print '<tr '.$bc[false].'>'; - print '<td class="nowrap"><label for="'.$key.'">'.$langs->trans($value["text"]).'</label></td><td><input type="text" class="flat inputsearch" name="'.$key.'" id="'.$key.'" size="14"></td>'; + print '<td class="nowrap"><label for="'.$key.'">'.$langs->trans($value["text"]).'</label></td><td><input type="text" class="flat inputsearch" name="'.$key.'" id="'.$key.'"></td>'; if ($i == 0) print '<td rowspan="'.count($listofsearchfields).'"><input type="submit" value="'.$langs->trans("Search").'" class="button"></td>'; print '</tr>'; $i++; diff --git a/htdocs/don/note.php b/htdocs/don/note.php new file mode 100644 index 0000000000000000000000000000000000000000..22d02fddb010b9a9fc3e2ce8bf86b9cf64087a41 --- /dev/null +++ b/htdocs/don/note.php @@ -0,0 +1,99 @@ +<?php +/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> + * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/** + * \file htdocs/compta/facture/note.php + * \ingroup facture + * \brief Fiche de notes sur une facture + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + +$langs->load("companies"); +$langs->load("bills"); +$langs->load("donations"); + +$id=(GETPOST('id','int')?GETPOST('id','int'):GETPOST('facid','int')); // For backward compatibility +$ref=GETPOST('ref','alpha'); +$action=GETPOST('action','alpha'); + +// Security check +$socid=0; +if ($user->societe_id) $socid=$user->societe_id; +$result=restrictedArea($user,'don',$id,''); + +$object = new Don($db); +$object->fetch($id); + +$permissionnote=$user->rights->don->creer; // Used by the include of actions_setnotes.inc.php + + +/* + * Actions + */ + +include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not includ_once + + + +/* + * View + */ + +$title = $langs->trans('Donation') . " - " . $langs->trans('Notes'); +$helpurl = ""; +llxHeader('', $title, $helpurl); + +$form = new Form($db); + +if ($id > 0 || ! empty($ref)) +{ + $object = new Don($db); + $object->fetch($id,$ref); + + $head = donation_prepare_head($object); + + dol_fiche_head($head, 'note', $langs->trans("Donation"), 0, 'generic'); + + $linkback = '<a href="'.DOL_URL_ROOT.'/don/list.php">'.$langs->trans("BackToList").'</a>'; + + print '<table class="border" width="100%">'; + + // Ref + print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'; + print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', ''); + print '</td></tr>'; + + print "</table>"; + + print '<br>'; + + include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; + + dol_fiche_end(); +} + + +llxFooter(); + +$db->close(); diff --git a/htdocs/ecm/search.php b/htdocs/ecm/search.php index 729543eff56c7645a8b2b2cf909879669440db62..dd37c86592ac2e5d69f033c92d7ecd986b902118 100644 --- a/htdocs/ecm/search.php +++ b/htdocs/ecm/search.php @@ -140,9 +140,9 @@ print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<table class="nobordernopadding" width="100%">'; print "<tr class=\"liste_titre\">"; print '<td colspan="2">'.$langs->trans("ECMSearchByKeywords").'</td></tr>'; -print "<tr ".$bc[false]."><td>".$langs->trans("Ref").':</td><td align="right"><input type="text" name="search_ref" class="flat" size="14"></td></tr>'; -print "<tr ".$bc[false]."><td>".$langs->trans("Title").':</td><td align="right"><input type="text" name="search_title" class="flat" size="14"></td></tr>'; -print "<tr ".$bc[false]."><td>".$langs->trans("Keyword").':</td><td align="right"><input type="text" name="search_keyword" class="flat" size="14"></td></tr>'; +print "<tr ".$bc[false]."><td>".$langs->trans("Ref").':</td><td align="right"><input type="text" name="search_ref" class="flat" size="10"></td></tr>'; +print "<tr ".$bc[false]."><td>".$langs->trans("Title").':</td><td align="right"><input type="text" name="search_title" class="flat" size="10"></td></tr>'; +print "<tr ".$bc[false]."><td>".$langs->trans("Keyword").':</td><td align="right"><input type="text" name="search_keyword" class="flat" size="10"></td></tr>'; print "<tr ".$bc[false].'><td colspan="2" align="center"><input type="submit" class="button" value="'.$langs->trans("Search").'"></td></tr>'; print "</table></form>"; //print $langs->trans("ECMSectionManualDesc"); diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index d16cd64f0ffd5cb03642b6fac068cc3f27d5c756..fdb4bf76359b795eb018d7553d3e559eff6a38ee 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -254,7 +254,7 @@ if ($id > 0 || ! empty($ref)) // Remise dispo de type non avoir $filter='fk_facture_source IS NULL'; print '<br>'; - $form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$commande->id,0,'remise_id',$soc->id,$absolute_discount,$filter); + $form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$commande->id,0,'remise_id',$soc->id,$absolute_discount,$filter, 0, '', 1); } } if ($absolute_creditnote) diff --git a/htdocs/expedition/tpl/linkedobjectblock.tpl.php b/htdocs/expedition/tpl/linkedobjectblock.tpl.php index 276eb5ed8fa68cbacd257b77c9e2c7fbf2500d21..f66ff148d66468899ae09346eb0906b1c41c7d3b 100644 --- a/htdocs/expedition/tpl/linkedobjectblock.tpl.php +++ b/htdocs/expedition/tpl/linkedobjectblock.tpl.php @@ -29,35 +29,52 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("sendings"); -$total=0; +$total=0; $ilink=0; $var=true; foreach($linkedObjectBlock as $key => $objectlink) { - $var=!$var; + $ilink++; + $var=!$var; + $trclass=($var?'pair':'impair'); + if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; ?> -<tr <?php echo $GLOBALS['bc'][$var]; ?> > - <td><?php echo $langs->trans("Shipment"); ?></td> - <td><?php echo $objectlink->getNomUrl(1); ?></td> - <td></td> - <td align="center"><?php echo dol_print_date($objectlink->date_delivery,'day'); ?></td> - <td align="right"><?php - if ($user->rights->expedition->lire) { - $total = $total + $objectlink->total_ht; - echo price($objectlink->total_ht); - } ?></td> - <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> - <td align="right"> - <?php - // For now, shipments must stay linked to order, so link is not deletable - if($object->element != 'commande') { - ?> - <a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> - <?php - } - ?> -</tr> + <tr class="<?php echo $trclass; ?>"> + <td><?php echo $langs->trans("Shipment"); ?></td> + <td><?php echo $objectlink->getNomUrl(1); ?></td> + <td></td> + <td align="center"><?php echo dol_print_date($objectlink->date_delivery,'day'); ?></td> + <td align="right"><?php + if ($user->rights->expedition->lire) { + $total = $total + $objectlink->total_ht; + echo price($objectlink->total_ht); + } ?></td> + <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> + <td align="right"> + <?php + // For now, shipments must stay linked to order, so link is not deletable + if($object->element != 'commande') { + ?> + <a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> + <?php + } + ?> + </tr> <?php } +if (count($linkedObjectBlock) > 1) +{ + ?> + <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>"> + <td><?php echo $langs->trans("Total"); ?></td> + <td></td> + <td align="center"></td> + <td align="center"></td> + <td align="right"><?php echo price($total); ?></td> + <td align="right"></td> + <td align="right"></td> + </tr> + <?php +} ?> <!-- END PHP TEMPLATE --> diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index e7f407acfd2d8f85c6ed5a043a0c63271891925f..7a852704f9cde6e92ca9a55e8487e2a66bd48a91 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -149,7 +149,7 @@ if (empty($dolibarr_main_db_type)) $dolibarr_main_db_type='mysqli'; // Pour comp if ($dolibarr_main_db_type == 'mysql') $dolibarr_main_db_type = 'mysqli'; if (empty($dolibarr_main_db_prefix)) $dolibarr_main_db_prefix='llx_'; if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($dolibarr_main_db_type=='mysqli'?'utf8':''); // Old installation -if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($dolibarr_main_db_type=='mysqli'?'utf8_general_ci':''); // Old installation +if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($dolibarr_main_db_type=='mysqli'?'utf8_unicode_ci':''); // Old installation if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0; if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey=''; if (empty($dolibarr_main_limit_users)) $dolibarr_main_limit_users=0; diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 286eaaebc88a594b317a0e290d2c93c62fd5314f..e1d73ec6e09cddb162d2e0f4f7d1c8a6f509cd0d 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -587,9 +587,10 @@ class CommandeFournisseur extends CommonOrder * * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param string $option On what the link points + * @param int $notooltip 1=Disable tooltip * @return string Chain with URL */ - public function getNomUrl($withpicto=0,$option='') + public function getNomUrl($withpicto=0,$option='',$notooltip=0) { global $langs, $conf; @@ -606,14 +607,28 @@ class CommandeFournisseur extends CommonOrder if (! empty($this->total_ttc)) $label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency); - $link = '<a href="'.DOL_URL_ROOT.'/fourn/commande/card.php?id='.$this->id.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; - $linkend='</a>'; - $picto='order'; + $url = DOL_URL_ROOT.'/fourn/commande/card.php?id='.$this->id; + + $linkclose=''; + if (empty($notooltip)) + { + if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) + { + $label=$langs->trans("ShowOrder"); + $linkclose.=' alt="'.dol_escape_htmltag($label, 1).'"'; + } + $linkclose.= ' title="'.dol_escape_htmltag($label, 1).'"'; + $linkclose.=' class="classfortooltip"'; + } + + $linkstart = '<a href="'.$url.'"'; + $linkstart.=$linkclose.'>'; + $linkend='</a>'; - if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); + if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - $result.=$link.$this->ref.$linkend; + $result.=$linkstart.$this->ref.$linkend; return $result; } diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 595dabff72ba76da6237c1f05935202d01089d22..af7bec526a684b3ef02337362c2302c13ebc73d3 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -10,7 +10,7 @@ * Copyright (C) 2014-2016 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2015 Bahfir Abbes <bafbes@gmail.com> * Copyright (C) 2015 Ferran Marcet <fmarcet@2byte.es> - * Copyright (C) 2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> + * Copyright (C) 2016 Alexandre Spangaro <aspangaro@zendsi.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -694,7 +694,6 @@ class FactureFournisseur extends CommonInvoice if (isset($this->tva)) $this->tva=trim($this->tva); if (isset($this->localtax1)) $this->localtax1=trim($this->localtax1); if (isset($this->localtax2)) $this->localtax2=trim($this->localtax2); - if (empty($this->total)) $this->total=0; if (empty($this->total_ht)) $this->total_ht=0; if (empty($this->total_tva)) $this->total_tva=0; // if (isset($this->total_localtax1)) $this->total_localtax1=trim($this->total_localtax1); @@ -734,7 +733,7 @@ class FactureFournisseur extends CommonInvoice $sql.= " tva=".(isset($this->tva)?$this->tva:"null").","; $sql.= " localtax1=".(isset($this->localtax1)?$this->localtax1:"null").","; $sql.= " localtax2=".(isset($this->localtax2)?$this->localtax2:"null").","; - $sql.= " total=".(isset($this->total)?$this->total:"null").","; + //$sql.= " total=".(isset($this->total)?$this->total:"null").","; $sql.= " total_ht=".(isset($this->total_ht)?$this->total_ht:"null").","; $sql.= " total_tva=".(isset($this->total_tva)?$this->total_tva:"null").","; $sql.= " total_ttc=".(isset($this->total_ttc)?$this->total_ttc:"null").","; @@ -1766,9 +1765,10 @@ class FactureFournisseur extends CommonInvoice * @param int $max Max length of shown ref * @param int $short 1=Return just URL * @param string $moretitle Add more text to title tooltip + * @param int $notooltip 1=Disable tooltip * @return string String with URL */ - public function getNomUrl($withpicto=0,$option='',$max=0,$short=0,$moretitle='') + public function getNomUrl($withpicto=0,$option='',$max=0,$short=0,$moretitle='',$notooltip=0) { global $langs, $conf; @@ -1803,10 +1803,23 @@ class FactureFournisseur extends CommonInvoice $ref=$this->ref; if (empty($ref)) $ref=$this->id; - $linkstart='<a href="'.$url.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; + $linkclose=''; + if (empty($notooltip)) + { + if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) + { + $label=$langs->trans("ShowSupplierInvoice"); + $linkclose.=' alt="'.dol_escape_htmltag($label, 1).'"'; + } + $linkclose.= ' title="'.dol_escape_htmltag($label, 1).'"'; + $linkclose.=' class="classfortooltip"'; + } + + $linkstart = '<a href="'.$url.'"'; + $linkstart.=$linkclose.'>'; $linkend='</a>'; - if ($withpicto) $result.=($linkstart.img_object($label, $picto, 'class="classfortooltip"').$linkend.' '); + if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend.' '); $result.=$linkstart.($max?dol_trunc($ref,$max):$ref).$linkend; return $result; } diff --git a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php index 4cb232add74c01c91e9bc085230efd6fb4efc418..ff16f267431985c8f5c9a97507f39e3d382cacc6 100644 --- a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php +++ b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php @@ -23,33 +23,51 @@ <?php global $user; +global $noMoreLinkedObjectBlockAfter; $langs = $GLOBALS['langs']; $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("orders"); -$total=0; +$total=0; $ilink=0; $var=true; foreach($linkedObjectBlock as $key => $objectlink) { - $var=!$var; + $ilink++; + $var=!$var; + $trclass=($var?'pair':'impair'); + if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; ?> -<tr <?php echo $bc[$var]; ?> > - <td><?php echo $langs->trans("SupplierOrder"); ?></td> - <td><a href="<?php echo DOL_URL_ROOT.'/fourn/commande/card.php?id='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowOrder"),"order").' '.$objectlink->ref; ?></a></td> - <td align="left"><?php echo $objectlink->ref_supplier; ?></td> - <td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td> - <td align="right"><?php - if ($user->rights->fournisseur->commande->lire) { - $total = $total + $objectlink->total_ht; - echo price($objectlink->total_ht); - } ?></td> - <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> - <td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> -</tr> + <tr class="<?php echo $trclass; ?>"> + <td><?php echo $langs->trans("SupplierOrder"); ?></td> + <td><a href="<?php echo DOL_URL_ROOT.'/fourn/commande/card.php?id='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowOrder"),"order").' '.$objectlink->ref; ?></a></td> + <td align="left"><?php echo $objectlink->ref_supplier; ?></td> + <td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td> + <td align="right"><?php + if ($user->rights->fournisseur->commande->lire) { + $total = $total + $objectlink->total_ht; + echo price($objectlink->total_ht); + } ?></td> + <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> + <td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> + </tr> <?php } +if (count($linkedObjectBlock) > 1) +{ + ?> + <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>"> + <td><?php echo $langs->trans("Total"); ?></td> + <td></td> + <td align="center"></td> + <td align="center"></td> + <td align="right"><?php echo price($total); ?></td> + <td align="right"></td> + <td align="right"></td> + </tr> + <?php +} ?> <!-- END PHP TEMPLATE --> diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index bd7d1317957ad49d9409b55f23cbbd250d534ae0..ecad08da51a97bb82cf3152d74baff11cef0ef55 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -8,7 +8,7 @@ * Copyright (C) 2013-2015 Philippe Grand <philippe.grand@atoo-net.com> * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014 Marcos García <marcosgdf@gmail.com> - * Copyright (C) 2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> + * Copyright (C) 2016 Alexandre Spangaro <aspangaro@zendsi.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -309,7 +309,7 @@ if (empty($reshook)) elseif ($action == 'setlabel' && $user->rights->fournisseur->facture->creer) { $object->fetch($id); - $object->label=$_POST['label']; + $object->label=GETPOST('label'); $result=$object->update($user); if ($result < 0) dol_print_error($db); } @@ -412,6 +412,7 @@ if (empty($reshook)) $id = $object->createFromCurrent($user); if ($id <= 0) { + $error++; setEventMessages($object->error, $object->errors, 'errors'); } } @@ -486,10 +487,10 @@ if (empty($reshook)) { // Reset fk_parent_line for no child products and special product if (($line->product_type != 9 && empty($line->fk_parent_line)) || $line->product_type == 9) { - $fk_parent_line = 0; + $fk_parent_line = 0; } - $line->fk_facture = $object->id; + $line->fk_facture_fourn = $object->id; $line->fk_parent_line = $fk_parent_line; $line->subprice =-$line->subprice; // invert price for object @@ -506,7 +507,7 @@ if (empty($reshook)) // Defined the new fk_parent_line if ($result > 0 && $line->product_type == 9) { - $fk_parent_line = $result; + $fk_parent_line = $result; } } @@ -571,8 +572,6 @@ if (empty($reshook)) if (! $error) { - $db->begin(); - $tmpproject = GETPOST('projectid', 'int'); // Creation facture @@ -745,34 +744,34 @@ if (empty($reshook)) } } } + } + } - if ($error) - { - $langs->load("errors"); - $db->rollback(); - - setEventMessages($object->error, $object->errors, 'errors'); - $action='create'; - $_GET['socid']=$_POST['socid']; - } - else - { - $db->commit(); + if ($error) + { + $langs->load("errors"); + $db->rollback(); - if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { - $outputlangs = $langs; - $result = $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); - if ($result < 0) - { - dol_print_error($db,$object->error,$object->errors); - exit; - } - } + setEventMessages($object->error, $object->errors, 'errors'); + $action='create'; + $_GET['socid']=$_POST['socid']; + } + else + { + $db->commit(); - header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { + $outputlangs = $langs; + $result = $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); + if ($result < 0) + { + dol_print_error($db,$object->error,$object->errors); exit; } } + + header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); + exit; } } @@ -2249,9 +2248,27 @@ else print '<div class="fichehalfright">'; print '<div class="ficheaddleft">'; print '<div class="underbanner clearboth"></div>'; - + print '<table class="border centpercent">'; - + + if (!empty($conf->multicurrency->enabled) && ($object->multicurrency_code != $conf->currency)) + { + // Multicurrency Amount HT + print '<tr><td class="titlefieldmiddle">' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '</td>'; + print '<td class="nowrap">' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; + print '</tr>'; + + // Multicurrency Amount VAT + print '<tr><td>' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '</td>'; + print '<td>' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; + print '</tr>'; + + // Multicurrency Amount TTC + print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '</td>'; + print '<td>' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; + print '</tr>'; + } + // Amount print '<tr><td>'.$langs->trans('AmountHT').'</td><td>'.price($object->total_ht,1,$langs,0,-1,-1,$conf->currency).'</td></tr>'; print '<tr><td>'.$langs->trans('AmountVAT').'</td><td>'.price($object->total_tva,1,$langs,0,-1,-1,$conf->currency).'<div class="inline-block"> '; @@ -2265,7 +2282,7 @@ else $s.='<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=calculate&calculationrule=roundoftotal">'.$langs->trans("Mode2").'</a>'; print $form->textwithtooltip($s, $langs->trans("CalculationRuleDesc",$calculationrulenum).'<br>'.$langs->trans("CalculationRuleDescSupplier"), 2, 1, img_picto('','help')); print '</div></td></tr>'; - + // Amount Local Taxes //TODO: Place into a function to control showing by country or study better option if ($societe->localtax1_assuj=="1") //Localtax1 @@ -2281,39 +2298,25 @@ else print '</tr>'; } print '<tr><td>'.$langs->trans('AmountTTC').'</td><td colspan="3">'.price($object->total_ttc,1,$langs,0,-1,-1,$conf->currency).'</td></tr>'; - - if (!empty($conf->multicurrency->enabled)) - { - // Multicurrency Amount HT - print '<tr><td>' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '</td>'; - print '<td class="nowrap">' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; - print '</tr>'; - - // Multicurrency Amount VAT - print '<tr><td>' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '</td>'; - print '<td class="nowrap" colspan="2">' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; - print '</tr>'; - - // Multicurrency Amount TTC - print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '</td>'; - print '<td class="nowrap" colspan="2">' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; - print '</tr>'; - } - + print '</table>'; - + /* * List of payments */ - $nbrows=9; $nbcols=3; + $sign = 1; + if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE) $sign = - 1; + + $nbrows=9; $nbcols=3; if (! empty($conf->projet->enabled)) $nbrows++; if (! empty($conf->banque->enabled)) { $nbrows++; $nbcols++; } if (! empty($conf->incoterm->enabled)) $nbrows++; - + if (! empty($conf->multicurrency->enabled)) $nbrows += 5; + // Local taxes if ($societe->localtax1_assuj=="1") $nbrows++; if ($societe->localtax2_assuj=="1") $nbrows++; - + $sql = 'SELECT p.datep as dp, p.ref, p.num_paiement, p.rowid, p.fk_bank,'; $sql.= ' c.id as paiement_type,'; $sql.= ' pf.amount,'; @@ -2325,7 +2328,7 @@ else $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn_facturefourn as pf ON pf.fk_paiementfourn = p.rowid'; $sql.= ' WHERE pf.fk_facturefourn = '.$object->id; $sql.= ' ORDER BY p.datep, p.tms'; - + $result = $db->query($sql); if ($result) { @@ -2333,14 +2336,14 @@ else $i = 0; $totalpaye = 0; print '<table class="noborder paymenttable" width="100%">'; print '<tr class="liste_titre">'; - print '<td>'.$langs->trans('Payments').'</td>'; + print '<td class="liste_titre">' . ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE ? $langs->trans("PaymentsBack") : $langs->trans('Payments')) . '</td>'; print '<td>'.$langs->trans('Date').'</td>'; print '<td>'.$langs->trans('Type').'</td>'; if (! empty($conf->banque->enabled)) print '<td align="right">'.$langs->trans('BankAccount').'</td>'; print '<td align="right">'.$langs->trans('Amount').'</td>'; print '<td width="18"> </td>'; print '</tr>'; - + $var=false; if ($num > 0) { @@ -2369,7 +2372,7 @@ else if ($objp->baid > 0) print $bankaccountstatic->getNomUrl(1,'transactions'); print '</td>'; } - print '<td align="right">'.price($objp->amount).'</td>'; + print '<td align="right">' . price($sign * $objp->amount) . '</td>'; print '<td align="center">'; if ($object->statut == FactureFournisseur::STATUS_VALIDATED && $object->paye == 0 && $user->societe_id == 0) { @@ -2387,7 +2390,8 @@ else { print '<tr '.$bc[$var].'><td colspan="'.$nbcols.'" class="opacitymedium">'.$langs->trans("None").'</td><td></td><td></td></tr>'; } - + + /* if ($object->paye == 0) { print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans('AlreadyPaid').' :</td><td align="right">'.price($totalpaye).'</td><td></td></tr>'; @@ -2398,14 +2402,139 @@ else print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans('RemainderToPay').' :</td>'; print '<td align="right"'.($resteapayer?' class="amountremaintopay"':'').'>'.price($resteapayer).'</td><td></td></tr>'; } - print '</table>'; + */ + $db->free($result); } else { dol_print_error($db); } - + + if ($object->type != FactureFournisseur::TYPE_CREDIT_NOTE) { + // Total already paid + print '<tr><td colspan="' . $nbcols . '" align="right">'; + if ($object->type != FactureFournisseur::TYPE_DEPOSIT) + print $langs->trans('AlreadyPaidNoCreditNotesNoDeposits'); + else + print $langs->trans('AlreadyPaid'); + print ' :</td><td align="right"'.(($totalpaye > 0)?' class="amountalreadypaid"':'').'>' . price($totalpaye) . '</td><td> </td></tr>'; + + $resteapayeraffiche = $resteapayer; + $cssforamountpaymentcomplete = 'amountpaymentcomplete'; + + // Loop on each credit note or deposit amount applied + $creditnoteamount = 0; + $depositamount = 0; + $sql = "SELECT re.rowid, re.amount_ht, re.amount_tva, re.amount_ttc,"; + $sql .= " re.description, re.fk_facture_source"; + $sql .= " FROM " . MAIN_DB_PREFIX . "societe_remise_except as re"; + $sql .= " WHERE fk_facture = " . $object->id; + $resql = $db->query($sql); + if ($resql) { + $num = $db->num_rows($resql); + $i = 0; + $invoice = new FactureFournisseur($db); + while ($i < $num) { + $obj = $db->fetch_object($resql); + $invoice->fetch($obj->fk_facture_source); + print '<tr><td colspan="' . $nbcols . '" align="right">'; + if ($invoice->type == FactureFournisseur::TYPE_CREDIT_NOTE) + print $langs->trans("CreditNote") . ' '; + if ($invoice->type == FactureFournisseur::TYPE_DEPOSIT) + print $langs->trans("Deposit") . ' '; + print $invoice->getNomUrl(0); + print ' :</td>'; + print '<td align="right">' . price($obj->amount_ttc) . '</td>'; + print '<td align="right">'; + print '<a href="' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id . '&action=unlinkdiscount&discountid=' . $obj->rowid . '">' . img_delete() . '</a>'; + print '</td></tr>'; + $i ++; + if ($invoice->type == FactureFournisseur::TYPE_CREDIT_NOTE) + $creditnoteamount += $obj->amount_ttc; + if ($invoice->type == FactureFournisseur::TYPE_DEPOSIT) + $depositamount += $obj->amount_ttc; + } + } else { + dol_print_error($db); + } + + // Paye partiellement 'escompte' + if (($object->statut == FactureFournisseur::STATUS_CLOSED || $object->statut == FactureFournisseur::STATUS_ABANDONED) && $object->close_code == 'discount_vat') { + print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">'; + print $form->textwithpicto($langs->trans("Discount") . ':', $langs->trans("HelpEscompte"), - 1); + print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td> </td></tr>'; + $resteapayeraffiche = 0; + $cssforamountpaymentcomplete = ''; + } + // Paye partiellement ou Abandon 'badsupplier' + if (($object->statut == FactureFournisseur::STATUS_CLOSED || $object->statut == FactureFournisseur::STATUS_ABANDONED) && $object->close_code == 'badsupplier') { + print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">'; + print $form->textwithpicto($langs->trans("Abandoned") . ':', $langs->trans("HelpAbandonBadCustomer"), - 1); + print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td> </td></tr>'; + // $resteapayeraffiche=0; + $cssforamountpaymentcomplete = ''; + } + // Paye partiellement ou Abandon 'product_returned' + if (($object->statut == FactureFournisseur::STATUS_CLOSED || $object->statut == FactureFournisseur::STATUS_ABANDONED) && $object->close_code == 'product_returned') { + print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">'; + print $form->textwithpicto($langs->trans("ProductReturned") . ':', $langs->trans("HelpAbandonProductReturned"), - 1); + print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td> </td></tr>'; + $resteapayeraffiche = 0; + $cssforamountpaymentcomplete = ''; + } + // Paye partiellement ou Abandon 'abandon' + if (($object->statut == FactureFournisseur::STATUS_CLOSED || $object->statut == FactureFournisseur::STATUS_ABANDONED) && $object->close_code == 'abandon') { + print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">'; + $text = $langs->trans("HelpAbandonOther"); + if ($object->close_note) + $text .= '<br><br><b>' . $langs->trans("Reason") . '</b>:' . $object->close_note; + print $form->textwithpicto($langs->trans("Abandoned") . ':', $text, - 1); + print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td> </td></tr>'; + $resteapayeraffiche = 0; + $cssforamountpaymentcomplete = ''; + } + + // Billed + print '<tr><td colspan="' . $nbcols . '" align="right">' . $langs->trans("Billed") . ' :</td><td align="right">' . price($object->total_ttc) . '</td><td> </td></tr>'; + + // Remainder to pay + print '<tr><td colspan="' . $nbcols . '" align="right">'; + if ($resteapayeraffiche >= 0) + print $langs->trans('RemainderToPay'); + else + print $langs->trans('ExcessReceived'); + print ' :</td>'; + print '<td align="right"'.($resteapayeraffiche?' class="amountremaintopay"':$cssforamountpaymentcomplete).'>' . price($resteapayeraffiche) . '</td>'; + print '<td class="nowrap"> </td></tr>'; + } + else // Credit note + { + // Total already paid back + print '<tr><td colspan="' . $nbcols . '" align="right">'; + print $langs->trans('AlreadyPaidBack'); + print ' :</td><td align="right">' . price($sign * $totalpaye) . '</td><td> </td></tr>'; + + // Billed + print '<tr><td colspan="' . $nbcols . '" align="right">' . $langs->trans("Billed") . ' :</td><td align="right">' . price($sign * $object->total_ttc) . '</td><td> </td></tr>'; + + // Remainder to pay back + print '<tr><td colspan="' . $nbcols . '" align="right">'; + if ($resteapayeraffiche <= 0) + print $langs->trans('RemainderToPayBack'); + else + print $langs->trans('ExcessPaydBack'); + print ' :</td>'; + print '<td align="right" bgcolor="#f0f0f0"><b>' . price($sign * $resteapayeraffiche) . '</b></td>'; + print '<td class="nowrap"> </td></tr>'; + + // Sold credit note + // print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans('TotalTTC').' :</td>'; + // print '<td align="right" style="border: 1px solid;" bgcolor="#f0f0f0"><b>'.price($sign * + // $object->total_ttc).'</b></td><td> </td></tr>'; + } + + print '</table>'; print '</div>'; print '</div>'; @@ -2432,16 +2561,12 @@ else /* * Lines */ - //$result = $object->getLinesArray(); - - - print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline')?'#add':'#line_'.GETPOST('lineid')).'" method="POST"> - <input type="hidden" name="token" value="'.$_SESSION['newtoken'].'"> - <input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline') . '"> - <input type="hidden" name="mode" value=""> - <input type="hidden" name="id" value="'.$object->id.'"> - <input type="hidden" name="socid" value="'.$societe->id.'"> - '; + print '<form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline')?'#add':'#line_'.GETPOST('lineid')).'" method="POST">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline') . '">'; + print '<input type="hidden" name="mode" value="">'; + print '<input type="hidden" name="id" value="'.$object->id.'">'; + print '<input type="hidden" name="socid" value="'.$societe->id.'">'; if (! empty($conf->use_javascript_ajax) && $object->statut == FactureFournisseur::STATUS_DRAFT) { include DOL_DOCUMENT_ROOT . '/core/tpl/ajaxrow.tpl.php'; @@ -2449,7 +2574,7 @@ else print '<table id="tablelines" class="noborder noshadow" width="100%">'; - global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax; + global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax; $forceall=1; $senderissupplier=1; $dateSelector=0; $inputalsopricewithtax=1; // Show object lines @@ -2498,7 +2623,7 @@ else // Modify a validated invoice with no payments if ($object->statut == FactureFournisseur::STATUS_VALIDATED && $action != 'edit' && $object->getSommePaiement() == 0 && $user->rights->fournisseur->facture->creer) { - print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit">'.$langs->trans('Modify').'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit">'.$langs->trans('Modify').'</a></div>'; } // Reopen a standard paid invoice @@ -2506,11 +2631,11 @@ else { if (! $facidnext && $object->close_code != 'replaced') // Not replaced by another invoice { - print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=reopen">'.$langs->trans('ReOpen').'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=reopen">'.$langs->trans('ReOpen').'</a></div>'; } else { - print '<span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('ReOpen').'</span>'; + print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('ReOpen').'</span></div>'; } } @@ -2519,27 +2644,52 @@ else { if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->fournisseur->supplier_invoice_advance->send) { - print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=presend&mode=init">'.$langs->trans('SendByMail').'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=presend&mode=init">'.$langs->trans('SendByMail').'</a></div>'; } - else print '<a class="butActionRefused" href="#">'.$langs->trans('SendByMail').'</a>'; + else print '<div class="inline-block divButAction"><span class="butActionRefused">'.$langs->trans('SendByMail').'</a></div>'; } - // Make payments - if ($action != 'edit' && $object->statut == FactureFournisseur::STATUS_VALIDATED && $object->paye == 0 && $user->societe_id == 0) + if ($object->type != FactureFournisseur::TYPE_CREDIT_NOTE && $action != 'edit' && $object->statut == FactureFournisseur::STATUS_VALIDATED && $object->paye == 0 && $user->societe_id == 0) { - print '<a class="butAction" href="paiement.php?facid='.$object->id.'&action=create'.($object->fk_account>0?'&accountid='.$object->fk_account:'').'">'.$langs->trans('DoPayment').'</a>'; // must use facid because id is for payment id not invoice + print '<div class="inline-block divButAction"><a class="butAction" href="paiement.php?facid='.$object->id.'&action=create'.($object->fk_account>0?'&accountid='.$object->fk_account:'').'">'.$langs->trans('DoPayment').'</a></div>'; // must use facid because id is for payment id not invoice } // Classify paid if ($action != 'edit' && $object->statut == FactureFournisseur::STATUS_VALIDATED && $object->paye == 0 && $user->societe_id == 0) { - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=paid"'; - print '>'.$langs->trans('ClassifyPaid').'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=paid"'; + print '>'.$langs->trans('ClassifyPaid').'</a></div>'; //print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=paid">'.$langs->trans('ClassifyPaid').'</a>'; } + // Reverse back money or convert to reduction + if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE || $object->type == FactureFournisseur::TYPE_DEPOSIT) { + // For credit note only + if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE && $object->statut == 1 && $object->paye == 0) + { + if ($resteapayer == 0) + { + print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseRemainderToPayIsZero").'">'.$langs->trans('DoPaymentBack').'</span></div>'; + } + else + { + print '<div class="inline-block divButAction"><a class="butAction" href="paiement.php?facid='.$object->id.'&action=create&accountid='.$object->fk_account.'">'.$langs->trans('DoPaymentBack').'</a></div>'; + } + } + + // For credit note + if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE && $object->statut == 1 && $object->paye == 0 && $user->rights->fournisseur->facture->creer && $object->getSommePaiement() == 0) { + print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id . '&action=converttoreduc">' . $langs->trans('ConvertToReduc') . '</a></div>'; + } + // For deposit invoice + if ($object->type == FactureFournisseur::TYPE_DEPOSIT && $object->paye == 1 && $resteapayer == 0 && $user->rights->fournisseur->facture->creer && empty($discount->id)) + { + print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&action=converttoreduc">'.$langs->trans('ConvertToReduc').'</a></div>'; + } + } + // Validate if ($action != 'edit' && $object->statut == FactureFournisseur::STATUS_DRAFT) { @@ -2548,13 +2698,13 @@ else if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->fournisseur->facture->creer)) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->fournisseur->supplier_invoice_advance->validate))) { - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=valid"'; - print '>'.$langs->trans('Validate').'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=valid"'; + print '>'.$langs->trans('Validate').'</a></div>'; } else { - print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("NotAllowed")).'"'; - print '>'.$langs->trans('Validate').'</a>'; + print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("NotAllowed")).'"'; + print '>'.$langs->trans('Validate').'</a></div>'; } } } @@ -2568,7 +2718,7 @@ else // Clone if ($action != 'edit' && $user->rights->fournisseur->facture->creer) { - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=clone&socid='.$object->socid.'">'.$langs->trans('ToClone').'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=clone&socid='.$object->socid.'">'.$langs->trans('ToClone').'</a></div>'; } // Create a credit note @@ -2586,7 +2736,7 @@ else if ($object->getSommePaiement()) { print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . $langs->trans("DisabledBecausePayments") . '">' . $langs->trans('Delete') . '</a></div>'; } else { - print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete">'.$langs->trans('Delete').'</a>'; + print '<div class="inline-block divButAction"><a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete">'.$langs->trans('Delete').'</a></div>'; } } print '</div>'; diff --git a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php index 6762d836d5238e42df6cf3cf53457d87e8cd7d69..2ab3b4d215bc2bb82690212d62fb8d7b3ba36070 100644 --- a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php +++ b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php @@ -24,32 +24,50 @@ <?php global $user; +global $noMoreLinkedObjectBlockAfter; $langs = $GLOBALS['langs']; $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("bills"); -$total=0; +$total=0; $ilink=0; $var=true; foreach($linkedObjectBlock as $key => $objectlink) { - $var=!$var; + $ilink++; + $var=!$var; + $trclass=($var?'pair':'impair'); + if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; ?> -<tr <?php echo $bc[$var]; ?> > - <td><?php echo $langs->trans("SupplierInvoice"); ?></td> - <td><a href="<?php echo DOL_URL_ROOT.'/fourn/facture/card.php?facid='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowBill"),"bill").' '.$objectlink->ref; ?></a></td> - <td align="left"><?php echo $objectlink->ref_supplier; ?></td> - <td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td> - <td align="right"><?php - if ($user->rights->fournisseur->facture->lire) { - $total = $total + $objectlink->total_ht; - echo price($objectlink->total_ht); - } ?></td> - <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> - <td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> -</tr> -<?php + <tr class="<?php echo $trclass; ?>"> + <td><?php echo $langs->trans("SupplierInvoice"); ?></td> + <td><a href="<?php echo DOL_URL_ROOT.'/fourn/facture/card.php?facid='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowBill"),"bill").' '.$objectlink->ref; ?></a></td> + <td align="left"><?php echo $objectlink->ref_supplier; ?></td> + <td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td> + <td align="right"><?php + if ($user->rights->fournisseur->facture->lire) { + $total = $total + $objectlink->total_ht; + echo price($objectlink->total_ht); + } ?></td> + <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> + <td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> + </tr> +<?php +} +if (count($linkedObjectBlock) > 1) +{ + ?> + <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>"> + <td><?php echo $langs->trans("Total"); ?></td> + <td></td> + <td align="center"></td> + <td align="center"></td> + <td align="right"><?php echo price($total); ?></td> + <td align="right"></td> + <td align="right"></td> + </tr> + <?php } ?> diff --git a/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php b/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php index e8248a385fa1ac742d6f17ad9f41713ddb180156..8a3023cab20ea8977f1cfe31591b2a5b6158ff68 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php +++ b/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php @@ -505,7 +505,7 @@ class CommentParser $data = explode('|', $data); $r['type'] = count($data) == 1 ? $data[0] : $data; } - if (isset($r['type']) && Text::endsWith($r['type'], '[]')) { + if (isset($r['type']) && is_string($r['type']) && Text::endsWith($r['type'], '[]')) { $r[static::$embeddedDataName]['type'] = substr($r['type'], 0, -2); $r['type'] = 'array'; } diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index b999eefe6a464154bfd4cb5b238fdde365942b70..eb7e77cfc24fa377d91f286e55418ce7998f3083 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -151,7 +151,7 @@ define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...) if (empty($conf->file->character_set_client)) $conf->file->character_set_client="UTF-8"; if (empty($conf->db->character_set)) $conf->db->character_set='utf8'; -if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_general_ci'; +if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_unicode_ci'; if (empty($conf->db->dolibarr_main_db_encryption)) $conf->db->dolibarr_main_db_encryption=0; if (empty($conf->db->dolibarr_main_db_cryptkey)) $conf->db->dolibarr_main_db_cryptkey=''; if (empty($conf->db->user)) $conf->db->user=''; @@ -300,11 +300,13 @@ function conf($dolibarr_main_document_root) $conf->db->user = trim($dolibarr_main_db_user); $conf->db->pass = trim($dolibarr_main_db_pass); + // Mysql driver support has been removed in favor of mysqli + if ($conf->db->type == 'mysql') $conf->db->type = 'mysqli'; if (empty($character_set_client)) $character_set_client="UTF-8"; $conf->file->character_set_client=strtoupper($character_set_client); - if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($conf->db->type=='mysql'?'latin1':''); // Old installation + if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($conf->db->type=='mysqli'?'utf8':''); $conf->db->character_set=$dolibarr_main_db_character_set; - if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($conf->db->type=='mysql'?'latin1_swedish_ci':''); // Old installation + if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($conf->db->type=='mysqli'?'utf8_unicode_ci':''); $conf->db->dolibarr_main_db_collation=$dolibarr_main_db_collation; if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0; $conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption; diff --git a/htdocs/install/mysql/migration/4.0.0-5.0.0.sql b/htdocs/install/mysql/migration/4.0.0-5.0.0.sql index 2e8ce9e5db23d6994b4ed39314e9fe0baaa4dd14..0e478820af97c0554a934f9ce02c06a24f9c7125 100644 --- a/htdocs/install/mysql/migration/4.0.0-5.0.0.sql +++ b/htdocs/install/mysql/migration/4.0.0-5.0.0.sql @@ -24,6 +24,9 @@ -- -- VPGSQL8.2 DELETE FROM llx_usergroup_user WHERE fk_user NOT IN (SELECT rowid from llx_user); -- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup); +-- after changing const name, please insure that old constant was rename +UPDATE llx_const SET name = 'THIRDPARTY_DEFAULT_CREATE_CONTACT' WHERE name='MAIN_THIRPARTY_CREATION_INDIVIDUAL' -- under 3.9.0 +UPDATE llx_const SET name = 'THIRDPARTY_DEFAULT_CREATE_CONTACT' WHERE name='MAIN_THIRDPARTY_CREATION_INDIVIDUAL' -- under 4.0.1 -- VPGSQL8.2 ALTER TABLE llx_product_lot ALTER COLUMN entity SET DEFAULT 1; ALTER TABLE llx_product_lot MODIFY COLUMN entity integer DEFAULT 1; @@ -105,8 +108,10 @@ ALTER TABLE llx_expensereport_extrafields ADD INDEX idx_expensereport_extrafield ALTER TABLE llx_cotisation RENAME TO llx_subscription; ALTER TABLE llx_subscription ADD UNIQUE INDEX uk_subscription (fk_adherent,dateadh); ALTER TABLE llx_subscription CHANGE COLUMN cotisation subscription real; -ALTER TABLE llx_adherent_type CHANGE COLUMN cotisation subscription varchar(3) NOT NULL DEFAULT 'yes'; - +ALTER TABLE llx_adherent_type CHANGE COLUMN cotisation subscription varchar(3) NOT NULL DEFAULT '1'; + +UPDATE llx_adherent_type SET subscription = '1' WHERE subscription = 'yes'; + CREATE TABLE llx_product_lot_extrafields ( rowid integer AUTO_INCREMENT PRIMARY KEY, @@ -177,3 +182,40 @@ ALTER TABLE llx_bank_account ADD COLUMN import_key varchar(14); ALTER TABLE llx_overwrite_trans ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER rowid; +ALTER TABLE llx_mailing_cibles ADD COLUMN error_text varchar(255); + + +create table llx_user_employment +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + entity integer DEFAULT 1 NOT NULL, -- multi company id + ref varchar(50), -- reference + ref_ext varchar(50), -- reference into an external system (not used by dolibarr) + fk_user integer, + datec datetime, + tms timestamp, + fk_user_creat integer, + fk_user_modif integer, + job varchar(128), -- job position. may be a dictionnary + status integer NOT NULL, -- draft, active, closed + salary double(24,8), -- last and current value stored into llx_user + salaryextra double(24,8), -- last and current value stored into llx_user + weeklyhours double(16,8), -- last and current value stored into llx_user + dateemployment date, -- last and current value stored into llx_user + dateemploymentend date -- last and current value stored into llx_user +)ENGINE=innodb; + + + + +-- Sequence to removed duplicated values of llx_links. Use serveral times if you still have duplicate. +drop table tmp_links_double; +--select objectid, label, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_links where label is not null group by objectid, label having count(rowid) >= 2; +create table tmp_links_double as (select objectid, label, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_links where label is not null group by objectid, label having count(rowid) >= 2); +--select * from tmp_links_double; +delete from llx_links where (rowid, label) in (select max_rowid, label from tmp_links_double); --update to avoid duplicate, delete to delete +drop table tmp_links_double; + +ALTER TABLE llx_links ADD UNIQUE INDEX uk_links (objectid,label); + + diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index da5eab83e9b5d366dd4344fe9a2d1e9f69aa038e..3ba06daabcea8c9ea58c5d41e2ce421325111e23 100755 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -13,6 +13,13 @@ -- flush privileges; +-- Requests to change character set and collation of a column + +-- ALTER TABLE llx_accountingaccount MODIFY account_number VARCHAR(20) CHARACTER SET utf8; +-- ALTER TABLE llx_accountingaccount MODIFY account_number VARCHAR(20) COLLATE utf8_unicode_ci; +-- You can check with show full columns from llx_accountingaccount; + + -- Requests to clean corrupted database @@ -169,6 +176,7 @@ update llx_opensurvey_sondage set format = 'D' where format = 'D+'; update llx_opensurvey_sondage set format = 'A' where format = 'A+'; update llx_opensurvey_sondage set tms = now(); + -- ALTER TABLE llx_facture_fourn ALTER COLUMN fk_cond_reglement DROP NOT NULL; @@ -176,12 +184,21 @@ update llx_product set barcode = null where barcode in ('', '-1', '0'); update llx_societe set barcode = null where barcode in ('', '-1', '0'); +-- Sequence to removed duplicated values of llx_links. Use serveral times if you still have duplicate. +drop table tmp_links_double; +--select objectid, label, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_links where label is not null group by objectid, label having count(rowid) >= 2; +create table tmp_links_double as (select objectid, label, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_links where label is not null group by objectid, label having count(rowid) >= 2); +--select * from tmp_links_double; +delete from llx_links where (rowid, label) in (select max_rowid, label from tmp_links_double); --update to avoid duplicate, delete to delete +drop table tmp_links_double; + + -- Sequence to removed duplicated values of barcode in llx_product. Use serveral times if you still have duplicate. drop table tmp_product_double; --select barcode, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_product where barcode is not null group by barcode having count(rowid) >= 2; create table tmp_product_double as (select barcode, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_product where barcode is not null group by barcode having count(rowid) >= 2); --select * from tmp_product_double; -update llx_product set barcode = null where (rowid, barcode) in (select max_rowid, barcode from tmp_product_double); +update llx_product set barcode = null where (rowid, barcode) in (select max_rowid, barcode from tmp_product_double); --update to avoid duplicate, delete to delete drop table tmp_product_double; diff --git a/htdocs/install/mysql/tables/llx_links.key.sql b/htdocs/install/mysql/tables/llx_links.key.sql new file mode 100644 index 0000000000000000000000000000000000000000..7ba509e9d58473c22de4ce703118a7cd364342c1 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_links.key.sql @@ -0,0 +1,22 @@ +-- ======================================================================== +-- Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net> +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- +-- Linked files +-- ======================================================================== + +ALTER TABLE llx_links ADD UNIQUE INDEX uk_links (objectid,label); + diff --git a/htdocs/install/mysql/tables/llx_mailing_cibles.sql b/htdocs/install/mysql/tables/llx_mailing_cibles.sql index 72fdeca2925a4e724eead45f4774aa49266760c6..f3031069220105ff0740881e9fb8af40df492da7 100644 --- a/htdocs/install/mysql/tables/llx_mailing_cibles.sql +++ b/htdocs/install/mysql/tables/llx_mailing_cibles.sql @@ -1,6 +1,6 @@ -- ======================================================================== -- Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> --- Copyright (C) 2009-2012 Laurent Destailleur <eldy@users.sourceforge.net> +-- Copyright (C) 2009-2016 Laurent Destailleur <eldy@users.sourceforge.net> -- Copyright (C) 2011-2012 Regis Houssin <regis.houssin@capnetworks.com> -- -- This program is free software; you can redistribute it and/or modify @@ -33,6 +33,6 @@ create table llx_mailing_cibles source_url varchar(160), source_id integer, source_type varchar(16), - date_envoi datetime - + date_envoi datetime, + error_text varchar(255) -- text with error if statut is -1 )ENGINE=innodb; diff --git a/htdocs/langs/de_AT/agenda.lang b/htdocs/langs/de_AT/agenda.lang index b5d5e6c2edbe70d6708007b058214ece4a64cf98..5412de7e00870798e34f5aa43feeeaf2dbbe8a27 100644 --- a/htdocs/langs/de_AT/agenda.lang +++ b/htdocs/langs/de_AT/agenda.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - agenda Actions=Termine -Calendar=Kalender LocalAgenda=interner Kalender Events=Termine ListOfActions=Terminliste diff --git a/htdocs/langs/en_GB/admin.lang b/htdocs/langs/en_GB/admin.lang index 0e5d27e124c700b3a08cd91be8eb300ad1f79b44..70a88f295060bbd3700898f5e722e33c0c24c404 100644 --- a/htdocs/langs/en_GB/admin.lang +++ b/htdocs/langs/en_GB/admin.lang @@ -2,7 +2,6 @@ AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir -ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values? Permission300=Read barcodes Permission301=Create/modify barcodes Permission302=Delete barcodes diff --git a/htdocs/langs/en_GB/banks.lang b/htdocs/langs/en_GB/banks.lang index bd9870721fcd183cd29d592d407449579a97e662..38ce1953eeb3d79f061f3c8ab1c6796924da2266 100644 --- a/htdocs/langs/en_GB/banks.lang +++ b/htdocs/langs/en_GB/banks.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - banks RIBControlError=Integrity check of values fails. This means the account details are incomplete or wrong (check country, numbers and IBAN). -ConfirmDeleteAccount=Are you sure you want to delete this account? RemoveFromRubriqueConfirm=Are you sure you want to remove link between the transaction and the category? CheckTransmitter=Drawer ValidateCheckReceipt=Validate this cheque receipt? diff --git a/htdocs/langs/en_GB/main.lang b/htdocs/langs/en_GB/main.lang index b59e54fcf5ffc101954b877117b983db072ebfee..d0595b7f56a5fb7cc20e675f25e9fca9941826fe 100644 --- a/htdocs/langs/en_GB/main.lang +++ b/htdocs/langs/en_GB/main.lang @@ -27,11 +27,6 @@ ErrorNoVATRateDefinedForSellerCountry=Error, no VAT rates defined for country '% BackgroundColorByDefault=Default background colour FileWasNotUploaded=A file is selected for attachment but has not yet been uploaded. Click on "Attach file" for this. NbOfEntries=Number of entries -DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr authentication mode is set to <b>%s</b> in configuration file <b>conf.php</b>.<br>This means that the password database is external to Dolibarr, so changing this field may have no effect. -PasswordForgotten=Password forgotten? -AuthenticationMode=Authentication mode -RequestedUrl=Requested URL -InformationToHelpDiagnose=This information can be useful for diagnostic purposes PrecisionUnitIsLimitedToXDecimals=Dolibarr was setup to limit precision of unit prices to <b>%s</b> decimal places. ConfirmSendCardByMail=Do you really want to send the contents of this card by mail to <b>%s</b>? Resiliate=Cancel diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 99131bd5c0c50fd421f8c8bfaf5e74fa03f86572..cae29217cdbc481875baf7a54375034e78a22eb8 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -8,7 +8,11 @@ ACCOUNTING_EXPORT_AMOUNT=Export amount ACCOUNTING_EXPORT_DEVISE=Export currency Selectformat=Select the format for the file ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name - +ThisService=This service +ThisProduct=This product +DefaultForService=Default for service +DefaultForProduct=Default for product +CantSuggest=Can't suggest AccountancySetupDoneFromAccountancyMenu=Most setup of the accountancy is done from the menu %s ConfigAccountingExpert=Configuration of the module accounting expert Journalization=Journalization @@ -16,11 +20,13 @@ Journaux=Journals JournalFinancial=Financial journals BackToChartofaccounts=Return chart of accounts Chartofaccounts=Chart of accounts +CurrentDedicatedAccountingAccount=Current dedicated account +AssignDedicatedAccountingAccount=New account to assign AccountancyArea=Accountancy area AccountancyAreaDescIntro=Usage of the accountancy module is done in several step: AccountancyAreaDescActionOnce=The following actions are usually executed one time only, or once per year... -AccountancyAreaDescActionOnceBis=Next step should be done to save you time in future by suggesting you the correct default accounting account when making thee journalization (writing record in Journals and General ledger) +AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in future by suggesting you the correct default accounting account when making thee journalization (writing record in Journals and General ledger) AccountancyAreaDescActionFreq=The following actions are usually executed every month, week or day for very large companies... AccountancyAreaDescChartModel=STEP %s: Create a model of chart of account from menu %s AccountancyAreaDescChart=STEP %s: Create or check content of your chart of account from menu %s @@ -47,7 +53,7 @@ ChangeAndLoad=Change and load Addanaccount=Add an accounting account AccountAccounting=Accounting account AccountAccountingShort=Account -AccountAccountingSuggest=Accounting account suggest +AccountAccountingSuggest=Accounting account suggested MenuDefaultAccounts=Default accounts MenuVatAccounts=Vat accounts MenuTaxAccounts=Tax accounts @@ -167,7 +173,7 @@ DescVentilSupplier=Consult here the list of supplier invoice lines bound or not DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account DescVentilTodoExpenseReport=Bind expense report lines not already bound with a fee accounting account DescVentilExpenseReport=Consult here the list of expense report lines bound (or not) to a fee accounting account -DescVentilExpenseReportMore=In most cases, if you use configured fees, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button <strong>"%s"</strong>. If account was not set on fees dictionary or if you still has some lines not bound to any account, you will have to make a manual binding from the menu "<strong>%s</strong>". +DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button <strong>"%s"</strong>. If account was not set on fees dictionary or if you still has some lines not bound to any account, you will have to make a manual binding from the menu "<strong>%s</strong>". DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account ValidateHistory=Bind Automatically @@ -207,11 +213,15 @@ DefaultBindingDesc=This page can be used to set a default account to use to link Options=Options OptionModeProductSell=Mode sales OptionModeProductBuy=Mode purchases -OptionModeProductSellDesc=Show all products with no accounting account defined for sales. -OptionModeProductBuyDesc=Show all products with no accounting account defined for purchases. +OptionModeProductSellDesc=Show all products with accounting account for sales. +OptionModeProductBuyDesc=Show all products with accounting account for purchases. CleanFixHistory=Remove accountancy code from lines that not exists into charts of account CleanHistory=Reset all bindings for selected year +WithoutValidAccount=Without valid dedicated account +WithValidAccount=With valid dedicated account +ValueNotIntoChartOfAccount=This value of accounting account does not exist into chart of account + ## Dictionary Range=Range of accounting account Calculated=Calculated diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 746d0ec7d77e907a6d5dbbde3de74a4ad8f987f8..f57dcfdc69d38cb0bd4c02eb12d44698e63785e8 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -354,6 +354,7 @@ Boolean=Boolean (Checkbox) ExtrafieldPhone = Phone ExtrafieldPrice = Price ExtrafieldMail = Email +ExtrafieldUrl = Url ExtrafieldSelect = Select list ExtrafieldSelectList = Select from table ExtrafieldSeparator=Separator @@ -398,7 +399,7 @@ EnableAndSetupModuleCron=If you want to have this recurring invoice beeing gener ModuleCompanyCodeAquarium=Return an accountancy code built by:<br>%s followed by third party supplier code for a supplier accountancy code,<br>%s followed by third party customer code for a customer accountancy code. ModuleCompanyCodePanicum=Return an empty accountancy code. ModuleCompanyCodeDigitaria=Accountancy code depends on third party code. The code is composed of the character "C" in the first position followed by the first 5 characters of the third party code. -Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1 validation, 2=first approval and 3=second approval if amount is enough).<br>Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval is always required. +Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1=validation, 2=first approval and 3=second approval if amount is enough).<br>Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval (3 steps) is always required. UseDoubleApproval=Use a 3 steps approval when amount (without tax) is higher than... # Modules @@ -1625,7 +1626,7 @@ AddOtherPagesOrServices=Add other pages or services AddModels=Add document or numbering templates AddSubstitutions=Add keys substitutions DetectionNotPossible=Detection not possible -UrlToGetKeyToUseAPIs=Url to get token to use API (once token has been received it is saved on database user table and will be checked on each future access) +UrlToGetKeyToUseAPIs=Url to get token to use API (once token has been received it is saved on database user table and must be provided on each API call) ListOfAvailableAPIs=List of available APIs activateModuleDependNotSatisfied=Module "%s" depends on module "%s" that is missing, so module "%1$s" may not work correclty. Please install module "%2$s" or disable module "%1$s" if you want to be safe from any surprise CommandIsNotInsideAllowedCommands=The command you try to run is not inside list of allowed commands defined into parameter <strong>$dolibarr_main_restrict_os_commands</strong> into <strong>conf.php</strong> file. diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index 3f4898630ba32b6387fff8155c64a04e169a288a..825c31744e070efcac947ab664c6ff1a16465f18 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -446,6 +446,7 @@ PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice templat TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for deposit invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 TerreNumRefModelError=A bill starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. +CactusNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for credit notes and %syymm-nnnn for deposit invoices where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 ##### Types de contacts ##### TypeContact_facture_internal_SALESREPFOLL=Representative following-up customer invoice TypeContact_facture_external_BILLING=Customer invoice contact diff --git a/htdocs/langs/en_US/commercial.lang b/htdocs/langs/en_US/commercial.lang index 5e1959d0ecb0ff3e44bea16450018d133cf758e6..a6a0fc22b9e7dbcae355bed9bf855c50d6a1083c 100644 --- a/htdocs/langs/en_US/commercial.lang +++ b/htdocs/langs/en_US/commercial.lang @@ -62,7 +62,7 @@ ActionAC_SHIP=Send shipping by mail ActionAC_SUP_ORD=Send supplier order by mail ActionAC_SUP_INV=Send supplier invoice by mail ActionAC_OTH=Other -ActionAC_OTH_AUTO=Other (automatically inserted events) +ActionAC_OTH_AUTO=Automatically inserted events ActionAC_MANUAL=Manually inserted events ActionAC_AUTO=Automatically inserted events Stats=Sales statistics diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 45e8246261aa48f68bffbb3414e4634017950d83..1c1a3bf3245681c8ae11f832719ef5d2f6188c4a 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -50,7 +50,6 @@ NbOfEMails=Nb of EMails TotalNbOfDistinctRecipients=Number of distinct recipients NoTargetYet=No recipients defined yet (Go on tab 'Recipients') RemoveRecipient=Remove recipient -CommonSubstitutions=Common substitutions YouCanAddYourOwnPredefindedListHere=To create your email selector module, see htdocs/core/modules/mailings/README. EMailTestSubstitutionReplacedByGenericValues=When using test mode, substitutions variables are replaced by generic values MailingAddFile=Attach this file diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index ebd0a55e94cf5cf1df9733b0546aada513128c80..e5d0a5bb9700a30fb68e24076475be7f31f957ac 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -635,7 +635,7 @@ PrintContentArea=Show page to print main content area MenuManager=Menu manager WarningYouAreInMaintenanceMode=Warning, you are in a maintenance mode, so only login <b>%s</b> is allowed to use application at the moment. CoreErrorTitle=System error -CoreErrorMessage=Sorry, an error occurred. Check the logs or contact your system administrator. +CoreErrorMessage=Sorry, an error occurred. Contact your system administrator to check the logs or disable $dolibarr_main_prod=1 to get more information. CreditCard=Credit card FieldsWithAreMandatory=Fields with <b>%s</b> are mandatory FieldsWithIsForPublic=Fields with <b>%s</b> are shown on public list of members. If you don't want this, check off the "public" box. diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index c123fed51a5ba77a9b035d7e111952fb934425aa..245f6f3ccc08e716c6f9db530ebb3d074aac3ab5 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -13,7 +13,7 @@ ListOfValidatedPublicMembers=List of validated public members ErrorThisMemberIsNotPublic=This member is not public ErrorMemberIsAlreadyLinkedToThisThirdParty=Another member (name: <b>%s</b>, login: <b>%s</b>) is already linked to a third party <b>%s</b>. Remove this link first because a third party can't be linked to only a member (and vice versa). ErrorUserPermissionAllowsToLinksToItselfOnly=For security reasons, you must be granted permissions to edit all users to be able to link a member to a user that is not yours. -ThisIsContentOfYourCard=This is details of your card +ThisIsContentOfYourCard=Hi.<br><br>This is a remind of the information we get about you. Feel free to contact us if something looks wrong.<br><br> CardContent=Content of your member card SetLinkToUser=Link to a Dolibarr user SetLinkToThirdParty=Link to a Dolibarr third party diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index 45997ef6cb58ecd7633cc3d0fde1128477a088e6..2f0579394eba99180baeaa015d95e21c1d957193 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -19,6 +19,7 @@ CustomerOrder=Customer order CustomersOrders=Customer orders CustomersOrdersRunning=Current customer orders CustomersOrdersAndOrdersLines=Customer orders and order lines +OrdersDeliveredToBill=Customer orders delivered to bill OrdersToBill=Customer orders delivered OrdersInProcess=Customer orders in process OrdersToProcess=Customer orders to process diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index 27b64a4399d4f2e4ed5b4358ddbbb23add8185a9..9bea19a30a213fad409c93fbb931a1107630102a 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -101,6 +101,7 @@ KeywordFilter=Keyword filter CategoryFilter=Category filter ProductToAddSearch=Search product to add NoMatchFound=No match found +ListOfProductsServices=List of products/services ProductAssociationList=List of products/services that are component of this virtual product/package ProductParentList=List of virtual products/services with this product as a component ErrorAssociationIsFatherOfThis=One of selected product is parent with current product diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang index cbbeb092a1aa9fe0b635ef3704cfc8832c70ecda..b85b61bc33449f85feec8b2ab8412c92fe715b15 100644 --- a/htdocs/langs/en_US/sendings.lang +++ b/htdocs/langs/en_US/sendings.lang @@ -23,7 +23,7 @@ QtyReceived=Qty received QtyInOtherShipments=Qty in other shipments KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order -SendingsAndReceivingForSameOrder=Shipments and receivings for this order +SendingsAndReceivingForSameOrder=Shipments and receipts for this order SendingsToValidate=Shipments to validate StatusSendingCanceled=Canceled StatusSendingDraft=Draft diff --git a/htdocs/langs/en_US/supplier_proposal.lang b/htdocs/langs/en_US/supplier_proposal.lang index 94c0ef2e03908251d5a2368ae02e78bd598765c3..621d7784e358b4400b2cbf0076180baec27aabb3 100644 --- a/htdocs/langs/en_US/supplier_proposal.lang +++ b/htdocs/langs/en_US/supplier_proposal.lang @@ -28,6 +28,7 @@ SupplierProposalStatusClosed=Closed SupplierProposalStatusSigned=Accepted SupplierProposalStatusNotSigned=Refused SupplierProposalStatusDraftShort=Draft +SupplierProposalStatusValidatedShort=Validated SupplierProposalStatusClosedShort=Closed SupplierProposalStatusSignedShort=Accepted SupplierProposalStatusNotSignedShort=Refused diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index 8a09c66989ece70a7efca265fd525fdffbf06cc1..4a002fab02cd178101eda637b485147608ab587c 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -8,7 +8,7 @@ EditPassword=Edit password SendNewPassword=Regenerate and send password ReinitPassword=Regenerate password PasswordChangedTo=Password changed to: %s -SubjectNewPassword=Your new password for Dolibarr +SubjectNewPassword=Your new password for %s GroupRights=Group permissions UserRights=User permissions UserGUISetup=User display setup diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang index 229e3dd2941a8e3290bc7097b3775106f218d565..2a0da2ec1a392d02527fb59aa6f7b606c19058e8 100644 --- a/htdocs/langs/es_CL/admin.lang +++ b/htdocs/langs/es_CL/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin -Chartofaccounts=Gráfico de cuentas AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir diff --git a/htdocs/langs/es_CL/other.lang b/htdocs/langs/es_CL/other.lang index 89ebdd4939e1dfc7a3a5a5270267a24d47edc215..1b9b3fc44787e2a94e46e3d5974bffe037e4fdf7 100644 --- a/htdocs/langs/es_CL/other.lang +++ b/htdocs/langs/es_CL/other.lang @@ -6,6 +6,3 @@ PredefinedMailContentSendProposal=Buenos días, __CONTACTCIVNAME__ \n\n Nos pone NumberOfProposals=Número de cotizaciones en los últimos 12 meses NumberOfUnitsProposals=Número de unidades en las cotizaciones en los últimos 12 meses EMailTextProposalValidated=La cotización %s que le concierne ha sido validado. -PropalClosedSignedInDolibarr=Cotización %s firmada en Dolibarr -PropalClosedRefusedInDolibarr=Cotización %s rechazada en Dolibarr -Export=Exportar diff --git a/htdocs/langs/es_MX/accountancy.lang b/htdocs/langs/es_MX/accountancy.lang index b25be13345e3871446c95cfa05b40bbca617dba0..1195e791ea07873084f4b2472fc247778b774f7e 100644 --- a/htdocs/langs/es_MX/accountancy.lang +++ b/htdocs/langs/es_MX/accountancy.lang @@ -4,7 +4,6 @@ ACCOUNTING_EXPORT_DATE=Formato de fecha para el archivo de exportación ACCOUNTING_EXPORT_PIECE=Exportar el número de pieza ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Exportación con cuenta global AccountAccountingSuggest=Sugerencia de cuenta contable -Reports=Reportes Bookkeeping=Libro mayor CAHTF=Total de compra al proveedor antes de impuestos Processing=Procesando diff --git a/htdocs/langs/es_MX/banks.lang b/htdocs/langs/es_MX/banks.lang index cb585733a552f40692f4a039d158548b655a5cc3..81e2d6e77b30339ba802a2d92264560b46e12e53 100644 --- a/htdocs/langs/es_MX/banks.lang +++ b/htdocs/langs/es_MX/banks.lang @@ -49,7 +49,6 @@ BankLineConciliated=Transacción conciliada CustomerInvoicePayment=Pago de cliente WithdrawalPayment=Pago de retiro SocialContributionPayment=Pago de impuesto social/fiscal -TransferDesc=Al crear una transferencia de una de sus cuentas bancarias hacia otra, Dolibarr crea dos registros contables (uno de débito en una cuenta y otro de crédito, del mismo importe, en la otra cuenta. Se utiliza para los dos registros la misma etiqueta de transferencia y la misma fecha) TransferFromToDone=La transferencia de <b>%s</b> hacia <b>%s</b> de <b>%s</b> %s ha sido registrada. ValidateCheckReceipt=¿Validar este recibo de cheque? ConfirmValidateCheckReceipt=¿Seguro que deseas validar este recibo de cheque? Ningún cambio será posible una vez que se valide diff --git a/htdocs/langs/es_MX/install.lang b/htdocs/langs/es_MX/install.lang index 1327b3550ba468235ea3ae422672d6074cda533a..5b0120eb61265e3ce6c95e70b2232a6574c711b8 100644 --- a/htdocs/langs/es_MX/install.lang +++ b/htdocs/langs/es_MX/install.lang @@ -46,7 +46,6 @@ KeepEmptyIfNoPassword=Deje en blanco si el usuario no tiene contraseña (evite e SaveConfigurationFile=Guardar valores ServerConnection=Conexión con el servidor DatabaseCreation=Creación de bases de datos -UserCreation=Creación de usuario CreateDatabaseObjects=Creación de objetos de la base de datos ReferenceDataLoading=Referencia de carga de datos TablesAndPrimaryKeysCreation=Creación de Tablas y Llaves primarias diff --git a/htdocs/langs/es_MX/main.lang b/htdocs/langs/es_MX/main.lang index 15a19991313d8d076ad28af40d5433b4a6ce056d..3a19fee8ca204e290255f0bc1cc703be523c54d5 100644 --- a/htdocs/langs/es_MX/main.lang +++ b/htdocs/langs/es_MX/main.lang @@ -90,6 +90,7 @@ DateOperation=Fecha de operación DateOperationShort=Fecha Op. DateBuild=Fecha de generación del informe DatePayment=Fecha de pago +UserCreation=Creación de usuario HourShort=Hr Rate=Tasa UseLocalTax=Incluir impuesto diff --git a/htdocs/langs/es_MX/other.lang b/htdocs/langs/es_MX/other.lang index a84e58cb5e221a4d8871d932043460a536c25c10..c444411ea1d5ebd738634ca17593ee64813790a4 100644 --- a/htdocs/langs/es_MX/other.lang +++ b/htdocs/langs/es_MX/other.lang @@ -1,5 +1,3 @@ # Dolibarr language file - Source file is en_US - other Tools=Herramientas Notify_COMPANY_CREATE=Tercero creado -ShipmentValidatedInDolibarr=Envío %s validado -Export=Exportar diff --git a/htdocs/langs/es_PE/accountancy.lang b/htdocs/langs/es_PE/accountancy.lang index ddd943295ab50bc95a89784dddbbd0e4e5d869d1..8ca8b14dc1ac9f0d5c188243fe5f7d2b4f1f7946 100644 --- a/htdocs/langs/es_PE/accountancy.lang +++ b/htdocs/langs/es_PE/accountancy.lang @@ -15,5 +15,4 @@ BackToChartofaccounts=Retornar gráfico de cuentas Selectchartofaccounts=Seleccionar un gráfico de cuentas Addanaccount=Agregar una cuenta contable AccountAccountingSuggest=Cuenta contable sugerida -Reports=Reportes OptionsDeactivatedForThisExportModel=Para este modelo de exportación, las opciones están desactivadas diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang index 010ca477b542e58dfa2ee12e85efab16bf895351..ad3d87e9ce7a1c293e1f46fe5b9899a190dc2f78 100644 --- a/htdocs/langs/fr_CA/admin.lang +++ b/htdocs/langs/fr_CA/admin.lang @@ -116,8 +116,6 @@ ApiDesc=En activant ce module , Dolibarr devenir un serveur REST pour fournir de ApiProductionMode=Activer le mode de production (active l'utilisation d'un cache pour la gestion des services ) OnlyActiveElementsAreExposed=Seuls les éléments de modules activés sont exposés ApiKey=Clé API -FiscalYears=Années fiscales -FiscalYearCard=Fiche année fiscale NewFiscalYear=Nouvelle année fiscale OpenFiscalYear=Ouvrir année fiscale CloseFiscalYear=Fermer année fiscale diff --git a/htdocs/langs/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang index 52ca3321b15b22f141e4f3f7d86fb49728858b36..bd6e2e989e0f7fe58ab285f38f77df920b3aca81 100644 --- a/htdocs/langs/fr_FR/accountancy.lang +++ b/htdocs/langs/fr_FR/accountancy.lang @@ -16,23 +16,28 @@ Journaux=Journaux JournalFinancial=Journaux financiers BackToChartofaccounts=Retour au plan comptable Chartofaccounts=Plan comptable +CurrentDedicatedAccountingAccount=Compte dédié courant +AssignDedicatedAccountingAccount=Nouveau compte à assigner AccountancyArea=Espace comptabilité AccountancyAreaDescIntro=L'utilisation du module de comptabilité se fait en plusieurs étapes: AccountancyAreaDescActionOnce=Les actions suivantes sont habituellement exécutées une seule fois, ou une fois par an ... +AccountancyAreaDescActionOnceBis=Les prochaines étapes doivent être faite pour vous faire pour gagner du temps à l'avenir en vous proposant le bon compte comptable par défaut lors de la journalisation (écrire des enregistrements dans les journaux et Grand Livre) AccountancyAreaDescActionFreq=Les actions suivantes sont habituellement exécutées chaque mois, semaine, ou jour pour les très grandes entreprises ... AccountancyAreaDescChartModel=STEP %s: Créer un modèle de plan de compte depuis le menu %s AccountancyAreaDescChart=STEP %s: Créer ou vérifier le contenu de votre plan de compte depuis le menu %s -AccountancyAreaDescBank=STEP %s: Vérifier que la liaison entre les comptes bancaires et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le bon compte comptable par défaut sur vos lignes de paiement. <br>Pour cela, rendez-vous sur la fiche de chaque compte financier. Vous pouvez commencer à partir de la page %s. -AccountancyAreaDescVat=STEP %s: Vérifiez que la liaison entre le paiement de la TVA et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le compte comptable par défaut correcte sur les enregistrements liés aux paiements de TVA.<br>Vous pouvez définir les comptes comptables à utiliser pour chaque taux de TVA sur la page %s. -AccountancyAreaDescSal=STEP %s: Vérifier que la liaison entre les paiements de salaires et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le bon compte comptable par défaut sur les enregistrements en rapport avec les paiements des salaires.<br>Pour cela, vous pouvez utiliser l'entrée de menu %s. -AccountancyAreaDescContrib=STEP %s: Vérifier que la liaison entre les dépenses spéciales (cotisations sociales ou fiscales) et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le bon compte comptable par défaut sur les enregistrements liés aux paiements des cotisations sociales.<br>Pour cela, vous pouvez utiliser l'entrée de menu %s. -AccountancyAreaDescDonation=STEP %s: Vérifier que la liaison entre les paiements de dons et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le bon compte comptable par défaut sur les enregistrements liés aux paiements de don. <br> Vous pouvez définir le compte dédié pour cela à partir de l'entrée de menu %s. -AccountancyAreaDescMisc=STEP %s: Vérifier que les lignes de transactions divers et le compte comptable est fait. Compléter les liaisons manquantes.<br>Pour cela, vous pouvez utiliser l'entrée de menu %s. -AccountancyAreaDescProd=STEP %s: Vérifier que la liaison entre les produits/services et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le bon compte comptable par défaut sur vos lignes de facture. <br> Pour cela, vous pouvez utiliser l'entrée de menu %s. - -AccountancyAreaDescCustomer=STEP %s: Vérifier que la liaison entre les lignes de factures client existantes et le compte comptable est faite. Compléter les liaisons manquantes. Une fois que la liaison est terminée, l'application sera en mesure d'enregistrer les opérations dans le Grand Livre en un seul clic.<br>Pour cela, vous pouvez utiliser l'entrée de menu %s. -AccountancyAreaDescSupplier=STEP %s: Vérifier que la liaison entre les lignes de factures fournisseurs existantes et le compte comptable est faite. Compléter les liaisons manquantes. Une fois que la liaison est terminée, l'application sera en mesure d'enregistrer les opérations dans le Grand Livre en un seul clic. <br> Pour cela, vous pouvez utiliser l'entrée de menu %s. +AccountancyAreaDescBank=STEP %s: Vérifier que la liaison entre les comptes bancaires et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, rendez-vous sur la fiche de chaque compte financier. Vous pouvez commencer à partir de la page %s. +AccountancyAreaDescVat=STEP %s: Vérifiez que la liaison entre le paiement de la TVA et le compte comptable est faite. Compléter les liaisons manquantes. Vous pouvez définir les comptes comptables à utiliser pour chaque taux de TVA sur la page %s. +AccountancyAreaDescExpenseReport=STEP %s: Vérifiez que la liaison entre le type de notes de frais et le compte comptable est faite. Compléter les liaisons manquantes. Vous pouvez définir les comptes comptables à utiliser pour chaque type de ligne de note de frais sur la page %s. +AccountancyAreaDescSal=STEP %s: Vérifier que la liaison entre les paiements de salaires et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s. +AccountancyAreaDescContrib=STEP %s: Vérifier que la liaison entre les dépenses spéciales (cotisations sociales ou fiscales) et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s. +AccountancyAreaDescDonation=STEP %s: Vérifier que la liaison entre les paiements de dons et le compte comptable est faite. Compléter les liaisons manquantes. Vous pouvez définir le compte dédié pour cela à partir de l'entrée de menu %s. +AccountancyAreaDescMisc=STEP %s: Vérifier que les lignes de transactions divers et le compte comptable est fait. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s. +AccountancyAreaDescProd=STEP %s: Vérifier que la liaison entre les produits/services et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s. +AccountancyAreaDescLoan=STEP %s: Vérifier que la liaison entre les paiement de prêts et les comptes comptables est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s. + +AccountancyAreaDescCustomer=STEP %s: Vérifier que la liaison entre les lignes de factures client existantes et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s. +AccountancyAreaDescSupplier=STEP %s: Vérifier que la liaison entre les lignes de factures fournisseurs existantes et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s. AccountancyAreaDescWriteRecords=STEP %s: Ecrire les transactions dans le Grand Livre. Pour cela, aller sur chaque Journal, et cliquer sur le bouton "Enregistrer les opérations dans le Grand Livre". AccountancyAreaDescAnalyze=STEP %s: Ajouter ou modifier les opérations existantes et générer des rapports et des exportations. @@ -46,11 +51,16 @@ AccountAccounting=Compte comptable AccountAccountingShort=Compte AccountAccountingSuggest=Suggestion du compte MenuDefaultAccounts=Comptes par défaut +MenuVatAccounts=Compte TVA +MenuTaxAccounts=Comptes charges +MenuExpenseReportAccounts=Comptes notes de frais +MenuLoanAccounts=Comptes emprunts MenuProductsAccounts=Compte produits ProductsBinding=Comptes produits Ventilation=Liés aux comptes CustomersVentilation=Liaison factures client SuppliersVentilation=Liaison factures fournisseur +ExpenseReportsVentilation=Liaison notes de frais CreateMvts=Créer nouvelle transaction UpdateMvts=Modification d'une transaction WriteBookKeeping=Ventiler les opérations dans le Grand Livre @@ -58,16 +68,21 @@ Bookkeeping=Grand livre AccountBalance=Balance des comptes CAHTF=Total achat fournisseur HT +TotalExpenseReport=Total note de frais InvoiceLines=Lignes de factures à ventiler InvoiceLinesDone=Lignes de factures liées +ExpenseReportLines=Lignes de notes de frais à lier +ExpenseReportLinesDone=Lignes de notes de frais liées IntoAccount=Lier ligne avec le compte comptable + Ventilate=Lier LineId=Id ligne Processing=Traitement en cours EndProcessing=Fin du traitement SelectedLines=Lignes sélectionnées Lineofinvoice=Ligne de la facture +LineOfExpenseReport=Ligne de note de frais NoAccountSelected=Pas de compte comptable sélectionné VentilatedinAccount=Liée avec succès sur compte comptable NotVentilatedinAccount=Non lié au compte comptable @@ -93,12 +108,12 @@ ACCOUNTING_SOCIAL_JOURNAL=Journal de paie ACCOUNTING_ACCOUNT_TRANSFER_CASH=Compte comptable de tranfert ACCOUNTING_ACCOUNT_SUSPENSE=Compte comptable d'attente -DONATION_ACCOUNTINGACCOUNT=Compte où enregistrer les dons +DONATION_ACCOUNTINGACCOUNT=Compte comptable pour l'enregistrement des dons -ACCOUNTING_PRODUCT_BUY_ACCOUNT=Compte comptable par défaut pour les produits achetés (si non défini dans la fiche produit) -ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Compte comptable par défaut pour les produits vendus (si non défini dans la fiche produit) -ACCOUNTING_SERVICE_BUY_ACCOUNT=Compte comptable par défaut pour les services achetés (si non défini dans la fiche service) -ACCOUNTING_SERVICE_SOLD_ACCOUNT=Compte comptable par défaut pour les services vendus (si non défini dans la fiche service) +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Compte comptable par défaut pour les produits achetés (utilisé si non défini dans la fiche produit) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Compte comptable par défaut pour les produits vendus (utilisé si non défini dans la fiche produit) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Compte comptable par défaut pour les services achetés (utilisé si non défini dans la fiche service) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Compte comptable par défaut pour les services vendus (utilisé si non défini dans la fiche service) Doctype=Type de documents Docdate=Date @@ -119,11 +134,13 @@ ConfirmDeleteMvt=Cela supprimera toutes les lignes du Grand Livre pour l'année ConfirmDeleteMvtPartial=Ceci va supprimer la(les) ligne(s) sélectionnée(s) du Grand Livre DelBookKeeping=Supprimer les écritures du grand livre FinanceJournal=Journal de trésorerie +ExpenseReportsJournal=Journal des notes de frais DescFinanceJournal=Journal de trésorerie comprenant tous les types de paiements par compte bancaire / caisse DescJournalOnlyBindedVisible=Ceci est une vue de enregistrements qui sont liés à un compte comptable produits et qui peuvent être enregistrées dans le Grand Livre. VATAccountNotDefined=Compte de la TVA non défini ThirdpartyAccountNotDefined=Compte pour le tiers non défini ProductAccountNotDefined=Compte pour le produit non défini +FeeAccountNotDefined=Compte de charge non défini BankAccountNotDefined=Compte pour la banque non défini CustomerInvoicePayment=Paiement de facture client ThirdPartyAccount=Comptes de tiers @@ -150,6 +167,10 @@ ChangeAccount=Modifier le compte comptable produit/service pour les lignes séle Vide=- DescVentilSupplier=Consultez ici la liste des lignes de facture fournisseur liées ou pas encore liées à un compte comptable produit DescVentilDoneSupplier=Consultez ici la liste des lignes de factures fournisseur et leur compte comptable +DescVentilTodoExpenseReport=Lier les lignes de note de frais par encore liées à un compte comptable +DescVentilExpenseReport=Consultez ici la liste des lignes de notes de frais liées (ou non) à un compte comptable +DescVentilExpenseReportMore=In most cases, if you use configured fees, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button <strong>"%s"</strong>. If account was not set on fees dictionary or if you still has some lines not bound to any account, you will have to make a manual binding from the menu "<strong>%s</strong>". +DescVentilDoneExpenseReport=Consultez ici la liste des lignes des notes de frais et leur compte comptable ValidateHistory=Lier automatiquement AutomaticBindingDone=Liaison automatique faite @@ -188,11 +209,15 @@ DefaultBindingDesc=Cette page peut être utilisée pour définir un compte par d Options=Options OptionModeProductSell=Mode ventes OptionModeProductBuy=Modes achats -OptionModeProductSellDesc=Afficher tous les produits/services n'ayant pas de compte comptable défini pour les ventes. -OptionModeProductBuyDesc=Afficher tous les produits/services n'ayant pas de compte comptable défini pour les achats. +OptionModeProductSellDesc=Afficher tous les produits/services avec le compte comptable pour les ventes. +OptionModeProductBuyDesc=Afficher tous les produits/services avec le compte comptable pour les achats. CleanFixHistory=Effacer les données comptables des lignes qui n'existent pas dans le plan comptable CleanHistory=Réinitialiser tous lesliens pour l'année sélectionnée +WithoutValidAccount=Sans compte dédié valide +WithValidAccount=Avec un compte dédié valide +ValueNotIntoChartOfAccount=Cette valeur de compte comptable n'existe pas dans le plan comptable + ## Dictionary Range=Plage de comptes Calculated=Calculé diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 0d4e90be88728dc0e38ddd9d3d45afe17341b16a..e956c203058d7114c22713cf6f64bfad979f4395 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -58,8 +58,8 @@ ErrorCodeCantContainZero=Erreur, le code ne peut contenir la valeur 0 DisableJavascript=Désactive les fonctions Javascript et Ajax (Recommandé pour les personnes aveugles ou navigateurs text). UseSearchToSelectCompanyTooltip=Si vous avez un nombre important de tiers (>100 000), vous pourrez améliorer les performances en positionnant la constante COMPANY_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limité au début des chaines. UseSearchToSelectContactTooltip=Si vous avez un nombre important de contacts (>100 000), vous pourrez améliorer les performances en positionnant la constante CONTACT_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limité au début des chaines. -DelaiedFullListToSelectCompany=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste des tiers (Cela peut augmenter les performances si vous avez un grand nombre de tiers) -DelaiedFullListToSelectContact=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste des contacts (Cela peut augmenter les performances si vous avez un grand nombre de contacts) +DelaiedFullListToSelectCompany=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste déroulante des tiers (Cela peut augmenter les performances si vous avez un grand nombre de contacts) +DelaiedFullListToSelectContact=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste déroulante des contacts/adresses (Cela peut augmenter les performances si vous avez un grand nombre de contacts) NumberOfKeyToSearch=Nb carac. déclenchant recherche : %s NotAvailableWhenAjaxDisabled=Non disponible quand Ajax est désactivé AllowToSelectProjectFromOtherCompany=Sur les éléments d'un tiers, autorise la sélection d'un projet lié à un autre tiers @@ -1017,7 +1017,7 @@ SimpleNumRefModelDesc=Renvoie le numéro sous la forme %syymm-nnnn où yy est l' ShowProfIdInAddress=Afficher l'identifiant professionnel dans les adresses sur les documents ShowVATIntaInAddress=Cacher l'identifiant de TVA Intracommunautaire dans les adresses sur les documents TranslationUncomplete=Traduction partielle -SomeTranslationAreUncomplete=Certaines langues sont traduites partiellement ou peuvent contenir des erreurs. Si vous en détectez, vous pouvez corriger les fichiers langues depuis <a href="http://transifex.com/projects/p/dolibarr/" target="_blank">http://transifex.com/projects/p/dolibarr/</a>. +SomeTranslationAreUncomplete=Certaines langues sont traduites partiellement ou peuvent contenir des erreurs. Si vous en détectez, vous pouvez corriger les fichiers langues depuis <a href="https://transifex.com/projects/p/dolibarr/" target="_blank">http://transifex.com/projects/p/dolibarr/</a>. MAIN_DISABLE_METEO=Désactiver la vue météo TestLoginToAPI=Tester connexion à l'API ProxyDesc=Certaines fonctions de Dolibarr nécessitent que le serveur ait accès à internet. Définissez ici les paramètres de ces accès. Si le serveur Dolibarr est derrière un proxy, ces paramètres indiquent à Dolibarr comment le traverser. @@ -1062,7 +1062,7 @@ TotalNumberOfActivatedModules=Nombre total de modules/fonctionnalités activés: YouMustEnableOneModule=Vous devez activer au moins une fonctionnalité ClassNotFoundIntoPathWarning=La classe %s n'a pas été trouvée dans le chemin PHP YesInSummer=Oui en été -OnlyFollowingModulesAreOpenedToExternalUsers=Remarque, seuls les modules suivants sont ouverts aux utilisateurs externes (quelles qu'en soient les permissions de ces utilisateurs): +OnlyFollowingModulesAreOpenedToExternalUsers=Remarque, seuls les modules suivants sont ouverts aux utilisateurs externes (quelles qu'en soient les permissions de ces utilisateurs) et seulement si les permissions leur ont été données: SuhosinSessionEncrypt=Stockage des sessions chiffrées par Suhosin ConditionIsCurrently=La condition est actuellement %s YouUseBestDriver=Vous utilisez le driver %s qui est le driver recommandé actuellement. @@ -1140,6 +1140,8 @@ FreeLegalTextOnSupplierProposal=Texte libre sur les demande de tarifs fournisseu WatermarkOnDraftSupplierProposal=Filigrane sur le brouillon de la demande de prix-fournisseur (aucun si vide) BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Demander le compte bancaire cible durant la création de la demande de prix fournisseur WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Demander pour l'entrepôt-source pour la commande +##### Suppliers Orders ##### +BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Demandez le compte bancaire destination de commande fournisseur ##### Orders ##### OrdersSetup=Configuration du module Commandes OrdersNumberingModules=Modèles de numérotation des commandes @@ -1320,7 +1322,7 @@ ViewProductDescInFormAbility=Visualisation des descriptions produits dans les fo MergePropalProductCard=Ajoute dans l'onglet Fichiers joints des produits/services, une option pour fusionner le document PDF du produit au PDF des propositions Azur si le produit/services est inclut dans la proposition. ViewProductDescInThirdpartyLanguageAbility=Visualisation des descriptions de produits dans la langue du tiers UseSearchToSelectProductTooltip=Si vous avez un nombre important de produits (>100 000), vous pourrez améliorer les performances en positionnant la constante PRODUCT_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limité au début des chaines. -UseSearchToSelectProduct=Utilisez un champ avec auto-complétion pour choisir les produits (plutôt qu'une liste déroulante). +UseSearchToSelectProduct=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste déroulante des produits (Cela peut augmenter les performances si vous avez un grand nombre de contacts) SetDefaultBarcodeTypeProducts=Type de code-barre utilisé par défaut pour les produits SetDefaultBarcodeTypeThirdParties=Type de code-barre utilisé par défaut pour les tiers UseUnits=Définir une unité de mesure pour la quantité lors de l'édition de lignes de commande, proposition ou facture @@ -1632,3 +1634,8 @@ SamePriceAlsoForSharedCompanies=Si vous utilisez un module multi-société, avec ModuleEnabledAdminMustCheckRights=Le module a été activé. Les permissions pour le(s) module(s) activé(s) ont été donnés aux utilisateurs admin uniquement. Vous devrez peut-être accorder des autorisations aux autres utilisateurs manuellement si nécessaire. UserHasNoPermissions=Cet utilisateur n'a pas de permission définie TypeCdr=Utilisez "Aucune" si la date du terme de paiement est la date de la facture plus un delta en jours (delta est le champ "Nb de jours") <br> Utilisez "À la fin du mois", si, après le delta, la date doit être augmentée pour atteindre la fin du mois (+ un «Offset» optionnel en jours) <br> Utilisez "Coutant/Suivant" pour que la date du terme de paiement soit la premier Nième jour du mois qui suit (N est stocké dans le champ "Nb de jours") +##### Resource #### +ResourceSetup=Configuration du module Ressource +UseSearchToSelectResource=Utilisez un champ avec auto-complétion pour choisir les ressources (plutôt qu'une liste déroulante). +DisabledResourceLinkUser=Supprimer le lien entre la ressource et l'utilisateur +DisabledResourceLinkContact=Désactiver le lient entre la ressource et le contact/adresse diff --git a/htdocs/langs/fr_FR/agenda.lang b/htdocs/langs/fr_FR/agenda.lang index 796488899dcc261196b0f6024d90e799dfb2e664..3d6dc494be42f0d84deb8d8552ff9c62e00de740 100644 --- a/htdocs/langs/fr_FR/agenda.lang +++ b/htdocs/langs/fr_FR/agenda.lang @@ -54,6 +54,7 @@ ShipmentValidatedInDolibarr=Expédition %s validée ShipmentClassifyClosedInDolibarr=Expédition %s classée payée ShipmentUnClassifyCloseddInDolibarr=Expédition %s réouverte ShipmentDeletedInDolibarr=Expédition %s supprimée +OrderCreatedInDolibarr=Commande %s créée OrderValidatedInDolibarr=Commande %s validée OrderDeliveredInDolibarr=Commande %s classée Livrée OrderCanceledInDolibarr=Commande %s annulée diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang index 9534504292198882bb609a6676d80587ee68202d..18963c824a8f542e08212120de241023fc0347af 100644 --- a/htdocs/langs/fr_FR/banks.lang +++ b/htdocs/langs/fr_FR/banks.lang @@ -55,19 +55,20 @@ AccountCard=Fiche compte DeleteAccount=Suppression de compte ConfirmDeleteAccount=Êtes-vous sûr de vouloir effacer cet événement ? Account=Compte -BankTransactionByCategories=Écritures bancaires par rubriques -BankTransactionForCategory=Écritures bancaires pour la rubrique <b>%s</b> +BankTransactionByCategories=Écritures bancaires par tags/catégories +BankTransactionForCategory=Écritures bancaires pour le tag/catégorie <b>%s</b> RemoveFromRubrique=Supprimer lien avec rubrique RemoveFromRubriqueConfirm=Êtes-vous sûr de vouloir supprimer le lien entre la transaction et la catégorie ? ListBankTransactions=Liste des écritures IdTransaction=Id écriture BankTransactions=Écritures bancaires ListTransactions=Liste écritures -ListTransactionsByCategory=Liste écritures/rubrique +ListTransactionsByCategory=Liste écritures/catégories TransactionsToConciliate=Écritures à rapprocher Conciliable=Rapprochable Conciliate=Rapprocher Conciliation=Rapprochement +ReconciliationLate=Rapprochement en retard IncludeClosedAccount=Inclure comptes fermés OnlyOpenedAccount=Seulement les comptes ouverts AccountToCredit=Compte à créditer @@ -80,7 +81,7 @@ StatusAccountClosed=Fermé AccountIdShort=Numéro LineRecord=Ecriture AddBankRecord=Ajouter écriture -AddBankRecordLong=Saisie d'une écriture manuelle hors facture +AddBankRecordLong=Saisie d'une écriture manuelle ConciliatedBy=Rapproché par DateConciliating=Date rapprochement BankLineConciliated=Écriture rapprochée diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index e2ab618fd30e22dca2be5db9f3dd3e3517f2b5ab..0fef037cd3adbf4bf8ccdb04448a958a9228919c 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -421,6 +421,7 @@ ShowUnpaidAll=Afficher tous les impayés ShowUnpaidLateOnly=Afficher uniquement les factures impayées en retard PaymentInvoiceRef=Paiement facture %s ValidateInvoice=Valider facture +ValidateInvoices=Factures validées Cash=Liquide Reported=Différé DisabledBecausePayments=Non disponible car il existe des paiements @@ -482,4 +483,5 @@ ToCreateARecurringInvoiceGene=Pour générer de futures factures régulièrement ToCreateARecurringInvoiceGeneAuto=Si vous devez utiliser de telles factures, demandez à votre administrateur d'activer le module <strong>%s</strong>. Notez que les deux méthodes de générations de factures (manuelles et automatiques) peuvent être utilisées simultanément sans risque de création de doublon. DeleteRepeatableInvoice=Supprimer facture modèle ConfirmDeleteRepeatableInvoice=Est-ce votre sûr de vouloir supprimer la facture modèle ? - +CreateOneBillByThird=Créer une facture par tiers (autrement, une facture par commande) +BillCreated=%s facture(s) créée(s) diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang index 1f75b228f8199fe96d5777b1d4773bece0cd0b39..5671adf71aac79f1ff87c2785da04267f6b8a127 100644 --- a/htdocs/langs/fr_FR/companies.lang +++ b/htdocs/langs/fr_FR/companies.lang @@ -77,6 +77,7 @@ VATIsUsed=Assujetti à la TVA VATIsNotUsed=Non assujetti à la TVA CopyAddressFromSoc=Remplir avec l'adresse du tiers ThirdpartyNotCustomerNotSupplierSoNoRef=Ce tiers n'est ni client ni fournisseur. il n'y a pas d'objet référent. +PaymentBankAccount=Compte bancaire paiements ##### Local Taxes ##### LocalTax1IsUsed=Assujetti à la deuxième taxe LocalTax1IsUsedES= Assujetti à RE @@ -172,6 +173,12 @@ ProfId3FR=Id. prof. 3 (NAF-APE) ProfId4FR=Id. prof. 4 (RCS/RM) ProfId5FR=- ProfId6FR=- +ProfId1GA=Id. prof. 1 (NIF) +ProfId2GA=Id. prof. 2 (RCCM) +ProfId3GA=Id. prof. 3 (CAE) +ProfId4GA=Id. prof. 4 +ProfId5GA=- +ProfId6GA=- ProfId1GB=Numéro d'enregistrement ProfId2GB=- ProfId3GB=SIC @@ -271,7 +278,7 @@ DefaultContact=Contact par défaut AddThirdParty=Créer tiers DeleteACompany=Supprimer une société PersonalInformations=Informations personnelles -AccountancyCode=Code compta +AccountancyCode=Compte comptable CustomerCode=Code client SupplierCode=Code fournisseur CustomerCodeShort=Code client diff --git a/htdocs/langs/fr_FR/compta.lang b/htdocs/langs/fr_FR/compta.lang index b572caed5f18785e18c8ce4f80017d44643ea270..d6b155ba5587d9e6468885a76a2505e5bf798890 100644 --- a/htdocs/langs/fr_FR/compta.lang +++ b/htdocs/langs/fr_FR/compta.lang @@ -86,6 +86,7 @@ Refund=Rembourser SocialContributionsPayments=Paiements de charges fiscales/sociales ShowVatPayment=Affiche paiement TVA TotalToPay=Total à payer +BalanceVisibilityDependsOnSortAndFilters=Le solde est visible dans cette liste que si la table est triée en ordre croissant sur %s et filtré pour 1 compte bancaire CustomerAccountancyCode=Compte comptable client SupplierAccountancyCode=Compte comptable fournisseur CustomerAccountancyCodeShort=Compte comptable client @@ -184,11 +185,11 @@ CalculationRuleDescSupplier=Selon le fournisseur, choisissez le mode approprié TurnoverPerProductInCommitmentAccountingNotRelevant=Le chiffre d'affaires par produit, dans une comptabilité en mode <b>comptabilité de caisse</b> n'est pas définissable. Ce rapport n'est disponible qu'en mode de comptabilité dit <b>comptabilité d'engagement</b> (voir la configuration du module de comptabilité). CalculationMode=Mode de calcul AccountancyJournal=Code journal comptabilité -ACCOUNTING_VAT_SOLD_ACCOUNT=Compte comptable par défaut pour l'encaissement de TVA (TVA sur les ventes) -ACCOUNTING_VAT_BUY_ACCOUNT=Compte comptable par défaut pour le paiement de la TVA (TVA sur les achats) +ACCOUNTING_VAT_SOLD_ACCOUNT=Compte comptable par défaut pour l'encaissement de TVA - TVA sur les ventes (utilisé si non défini au niveau de la configuration du dictionnaire de TVA) +ACCOUNTING_VAT_BUY_ACCOUNT=Compte comptable par défaut pour le paiement de la TVA - TVA sur les achats (utilisé si non défini au niveau de la configuration du dictionnaire de TVA) ACCOUNTING_VAT_PAY_ACCOUNT=Compte comptable par défaut pour le paiement de la TVA -ACCOUNTING_ACCOUNT_CUSTOMER=Compte comptable par défaut des tiers clients -ACCOUNTING_ACCOUNT_SUPPLIER=Compte comptable par défaut des tiers fournisseurs +ACCOUNTING_ACCOUNT_CUSTOMER=Compte comptable par défaut des tiers clients (utilisé si non défini au niveau de la fiche Tiers) +ACCOUNTING_ACCOUNT_SUPPLIER=Compte comptable par défaut des tiers fournisseurs (utilisé si non défini au niveau de la fiche Tiers) CloneTax=Cloner une charge sociale/fiscale ConfirmCloneTax=Confirmez le clone du paiement de charge sociale/fiscale CloneTaxForNextMonth=Cloner pour le mois suivant diff --git a/htdocs/langs/fr_FR/ecm.lang b/htdocs/langs/fr_FR/ecm.lang index 966ce8e4bde0480a30ec7c966d348ef1a023463a..8676f6323aa340bd2867ba43b5f263b5bbc3d8a5 100644 --- a/htdocs/langs/fr_FR/ecm.lang +++ b/htdocs/langs/fr_FR/ecm.lang @@ -32,6 +32,7 @@ ECMDocsByProducts=Documents associés aux produits ECMDocsByProjects=Documents associés aux projets ECMDocsByUsers=Documents associés aux utilisateurs ECMDocsByInterventions=Documents associés aux interventions +ECMDocsByExpenseReports=Documents associés aux notes de frais ECMNoDirectoryYet=Aucun répertoire créé ShowECMSection=Afficher répertoire DeleteSection=Suppression répertoire diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index c36cb8bf027c128add55c5edb51374c2f6f215a7..b5781633de67d79c2732f916b85de7ec310bd80b 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -69,7 +69,7 @@ ErrorLDAPSetupNotComplete=Le matching Dolibarr-LDAP est incomplet. ErrorLDAPMakeManualTest=Un fichier .ldif a été généré dans le répertoire %s. Essayez de charger ce fichier manuellement depuis la ligne de commande pour plus de détail sur l'erreur. ErrorCantSaveADoneUserWithZeroPercentage=Impossible de sauver une action à l'état non commencé avec un utilisateur défini comme ayant fait l'action. ErrorRefAlreadyExists=La référence utilisée pour la création existe déjà -ErrorPleaseTypeBankTransactionReportName=Veuillez saisir le nom de relevé bancaire sur lequel l'écriture est constatée (Format AAAAMM de préférence ou AAAAMMJJ) +ErrorPleaseTypeBankTransactionReportName=Choisissez le relevé bancaire sur lequel la ligne est rapportées (Format AAAAMM ou AAAAMMJJ) ErrorRecordHasChildren=Impossible de supprimer l'enregistrement car il possède des enregistrements fils. ErrorRecordIsUsedCantDelete=Ne peut effacer l'enregistrement. Ce dernier est déjà utilisé ou inclut dans un autre élément. ErrorModuleRequireJavascript=Le javascript ne doit pas être désactivé pour que cette fonctionnalité soit utilisable. Pour activer/désactiver l'utilisation de javascript, allez dans le menu Accueil->Configuration->Affichage. @@ -131,7 +131,7 @@ ErrorWarehouseMustDiffers=Les entrepôts source et destination doivent être dif ErrorBadFormat=Mauvais format ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Erreur, cet adhérent n'ait pas encore lié à un tiers. Lier le tier à un tiers existant ou créer un nouveau tiers avant de créer une adhésion avec facture. ErrorThereIsSomeDeliveries=Erreur, il y a des bordereaux de réception liées à ces expéditions. La suppression est refusée. -ErrorCantDeletePaymentReconciliated=Impossible d'effacer un paiement qui a généré une écriture bancaire qui a été rapprochée +ErrorCantDeletePaymentReconciliated=Impossible d'effacer un paiement qui a généré une écriture sur le compte bancaire et qui a été rapprochée. ErrorCantDeletePaymentSharedWithPayedInvoice=Impossible d'effacer un paiement qui porte sur au moins une facture qui est à l'état payée. ErrorPriceExpression1=Ne peut assigner la constante '%s' ErrorPriceExpression2=Ne peut redéfinir la fonction '%s' @@ -177,6 +177,7 @@ ErrorStockIsNotEnoughToAddProductOnProposal=Le stock du produit %s est insuffisa ErrorFailedToLoadLoginFileForMode=Impossible d'obtenir le fichier de connexion pour le mode '%s'. ErrorModuleNotFound=Fichier du module non trouvé. ErrorFieldAccountNotDefinedForBankLine=Valeur du compte comptable non défini pour la ligne de bank source %s +ErrorBankStatementNameMustFollowRegex=Erreur, le nom de relevé bancaire doit suivre la règle de syntaxe suivante %s # Warnings WarningPasswordSetWithNoAccount=Un mot de passe a été fixé pour cet adhérent. Cependant, aucun compte d'utilisateur n'a été créé. Donc, ce mot de passe est stocké, mais ne peut être utilisé pour accéder à Dolibarr. Il peut être utilisé par un module/interface externe, mais si vous n'avez pas besoin de définir ni login ni mot de passe pour un adhérent, vous pouvez désactiver l'option «Gérer un login pour chaque adhérent" depuis la configuration du module Adhérents. Si vous avez besoin de gérer un login, mais pas de mot de passe, vous pouvez laisser ce champ vide pour éviter cet avertissement. Remarque: L'email peut également être utilisé comme login si l'adhérent est lié à un utilisateur. diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang index 267c665090a7fa948034d0dbf9c4b41759b8e4e4..b032f361b019404f68fc4173ab06e276fad7a383 100644 --- a/htdocs/langs/fr_FR/install.lang +++ b/htdocs/langs/fr_FR/install.lang @@ -175,7 +175,7 @@ MigrationReopeningContracts=Réouverture des contrats qui ont au moins un servic MigrationReopenThisContract=Réouverture contrat %s MigrationReopenedContractsNumber=%s contrats modifiés MigrationReopeningContractsNothingToUpdate=Pas ou plus de contrats à ré-ouvrir. -MigrationBankTransfertsUpdate=Mise à jour des liens entre écriture bancaire et un transfert entre compte +MigrationBankTransfertsUpdate=Mise à jour des liens entre l'écriture en banque et le virement MigrationBankTransfertsNothingToUpdate=Aucun lien non à jour MigrationShipmentOrderMatching=Mise à jour bon expédition MigrationDeliveryOrderMatching=Mise à jour bon réception diff --git a/htdocs/langs/fr_FR/loan.lang b/htdocs/langs/fr_FR/loan.lang index c3114967ce0da2229b7e89ccc80546788a1ba8a1..612ba145f1898859a1e6d98ca22e3ff5b61c14db 100644 --- a/htdocs/langs/fr_FR/loan.lang +++ b/htdocs/langs/fr_FR/loan.lang @@ -4,6 +4,7 @@ Loans=Emprunts NewLoan=Nouvel emprunt ShowLoan=Montrer emprunt PaymentLoan=Paiement emprunt +LoanPayment=Paiement du prêt ShowLoanPayment=Montrer paiement de l'emprunt LoanCapital=Capital Insurance=Assurance @@ -11,7 +12,7 @@ Interest=Intérêt Nbterms=Nombre de termes LoanAccountancyCapitalCode=Compte comptable capital LoanAccountancyInsuranceCode=Compte comptable assurance -LoanAccountancyInterestCode=Compte comptable intérêt +LoanAccountancyInterestCode=Compte comptable intérêts ConfirmDeleteLoan=Confirmer la suppression de cet emprunt ? LoanDeleted=Emprunt supprimé avec succès ConfirmPayLoan=Classer cet emprunt comme payé @@ -44,6 +45,6 @@ GoToPrincipal=%s remboursera le principal (capital) YouWillSpend=Vous allez dépenser %s pour l'année %s # Admin ConfigLoan=Configuration du module Emprunt -LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Code comptable par défaut pour le capital -LOAN_ACCOUNTING_ACCOUNT_INTEREST=Code comptable par défaut pour les intérêts -LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Code comptable par défaut pour l'assurance +LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Compte comptable capital par défaut +LOAN_ACCOUNTING_ACCOUNT_INTEREST=Compte comptable intérêt par défaut +LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Compte comptable assurance par défaut diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index a4da0538d1de185b04186566090ecd126d501509..c69387908a421d24eb94837045c139b2d4e2ad64 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -62,6 +62,7 @@ ErrorCantLoadUserFromDolibarrDatabase=Impossible de trouver l'utilisateur <b>%s< ErrorNoVATRateDefinedForSellerCountry=Erreur, aucun taux tva défini pour le pays '%s'. ErrorNoSocialContributionForSellerCountry=Erreur, pas de types de charges sociales/fiscales définies pour le pays '%s'. ErrorFailedToSaveFile=Erreur, l'enregistrement du fichier a échoué. +ErrorCannotAddThisParentWarehouse=Vous essayez d'ajouter un entrepôt parent qui est déjà un enfant de l'entrepôt courant NotAuthorized=Vous n'êtes pas autorisé pour cette action. SetDate=Définir date SelectDate=Sélectionnez une date @@ -127,6 +128,7 @@ Activate=Activer Activated=Activé Closed=Clôturé Closed2=Fermé +NotClosed=Non fermé Enabled=Actif Deprecated=Obsolète Disable=Désactiver @@ -160,6 +162,7 @@ Go=Aller Run=Lancer CopyOf=Copie de Show=Voir +Hide=Cacher ShowCardHere=Voir la fiche ici Search=Rechercher SearchOf=Recherche de @@ -512,6 +515,7 @@ ReportPeriod=Période d'analyse ReportDescription=Description Report=Rapport Keyword=Mot-clé +Origin=Origine Legend=Légende Fill=Remplir Reset=Vider @@ -566,6 +570,7 @@ TextUsedInTheMessageBody=Corps du message SendAcknowledgementByMail=Envoi A.R. par email EMail=Email NoEMail=Pas d'email +Email=Email NoMobilePhone=Pas de téléphone portable Owner=Propriétaire FollowingConstantsWillBeSubstituted=Les constantes suivantes seront substituées par leur valeur correspondante. @@ -703,7 +708,7 @@ PublicUrl=URL publique AddBox=Ajouter boite SelectElementAndClickRefresh=Sélectionnez un élément et cliquez sur Rafraichir PrintFile=Imprimer fichier %s -ShowTransaction=Afficher transaction sur compte bancaire +ShowTransaction=Afficher l'écriture sur le compte bancaire GoIntoSetupToChangeLogo=Allez dans Accueil - Configuration - Société/institution pour changer le logo ou aller dans Accueil - Configuration - Affichage pour le cacher. Deny=Refuser Denied=Refusé @@ -719,7 +724,7 @@ DeleteLine=Effacer ligne ConfirmDeleteLine=Êtes-vous sûr de vouloir supprimer cette ligne ? NoPDFAvailableForDocGenAmongChecked=Aucun PDF n'est disponible pour la génération du document parmi les enregistrements cochés TooManyRecordForMassAction=Trop d'enregistrements sélectionnés pour l'action de masse. De telles actions sont restreintes à une liste de %s enregistrements maximum. -NoRecordSelected=Pas d'enregistrement sélectionné +NoRecordSelected=Aucu enregistrement sélectionné MassFilesArea=Zone des fichiers générés en masse ShowTempMassFilesArea=Afficher la zone des fichiers générés en masse RelatedObjects=Objets liés @@ -737,6 +742,7 @@ Miscellaneous=Divers Calendar=Calendrier GroupBy=Grouper par... ViewFlatList=Voir vue liste +RemoveString=Supprimer la chaine '%s' # Week day Monday=Lundi Tuesday=Mardi diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang index d2446163aa76ed3ef69701abfe5d47c221fe19ad..b6890016c75f9d5886e85eeb14bd4833296e19d8 100644 --- a/htdocs/langs/fr_FR/members.lang +++ b/htdocs/langs/fr_FR/members.lang @@ -127,8 +127,8 @@ NoThirdPartyAssociatedToMember=Pas de tiers associé à cet adhérent MembersAndSubscriptions= Adhérents et Adhésions MoreActions=Action complémentaire à l'enregistrement MoreActionsOnSubscription=Action complémentaire proposée par défaut à l'enregistrement de l'adhésion -MoreActionBankDirect=Création transaction sur compte bancaire ou caisse directement -MoreActionBankViaInvoice=Création facture avec paiement sur compte bancaire ou caisse +MoreActionBankDirect=Création une écriture directe sur le compte bancaire ou caisse +MoreActionBankViaInvoice=Créer une facture avec paiement sur compte bancaire ou caisse MoreActionInvoiceOnly=Création facture sans paiement LinkToGeneratedPages=Génération de cartes de visites ou planches d'adresses LinkToGeneratedPagesDesc=Cet écran vous permet de générer des planches de cartes de visite ou d'étiquettes d'adresses pour chaque adhérent ou pour un adhérent en particulier. diff --git a/htdocs/langs/fr_FR/orders.lang b/htdocs/langs/fr_FR/orders.lang index 71dfa59687065d0c129f2177b532618c1bdc00ad..25fc9a29d30df65f776c397d8bb27a355b415d57 100644 --- a/htdocs/langs/fr_FR/orders.lang +++ b/htdocs/langs/fr_FR/orders.lang @@ -19,6 +19,7 @@ CustomerOrder=Commande client CustomersOrders=Commandes clients CustomersOrdersRunning=Commandes clients en cours CustomersOrdersAndOrdersLines=Commandes clients et ligne de commandes +OrdersDeliveredToBill=Commandes clients délivrées à facturer OrdersToBill=Commandes clients à délivrer OrdersInProcess=Commandes clients en traitement OrdersToProcess=Commandes clients à traiter diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang index fc1511020f0787f1bbfbd6f8921eb3a877262f42..f438929d4a169f798fb7a7e1f89d38f307effd8b 100644 --- a/htdocs/langs/fr_FR/products.lang +++ b/htdocs/langs/fr_FR/products.lang @@ -90,19 +90,20 @@ ServiceLimitedDuration=Si produit de type service à durée limitée : MultiPricesAbility=Plusieurs niveaux de prix par produit/service (chaque client est dans un et un seul niveau) MultiPricesNumPrices=Nombre de prix AssociatedProductsAbility=Pris en charge des packages -AssociatedProducts=Produit virtuel/package -AssociatedProductsNumber=Nombre de produits packages composant ce package +AssociatedProducts=Produit virtuel +AssociatedProductsNumber=Nbre de sous-produits constituant ce produit virtuel ParentProductsNumber=Nbre de produits virtuels/packages parent ParentProducts=Produits parents -IfZeroItIsNotAVirtualProduct=Si 0, ce produit n'est pas utilisé par un produit package -IfZeroItIsNotUsedByVirtualProduct=Si 0, ce produit n'est pas un produit package +IfZeroItIsNotAVirtualProduct=Si 0, ce produit n'est pas un produit virtuel +IfZeroItIsNotUsedByVirtualProduct=Si 0, ce produit n'est pas utilisé par un produit virtuel Translation=Traduction KeywordFilter=Filtre par mot-clé CategoryFilter=Filtre par catégorie ProductToAddSearch=Recherche des produits à ajouter NoMatchFound=Aucun résultat n'a été trouvé +ListOfProductsServices=Liste des produits/services ProductAssociationList=Liste des produits/services constituant ce produit package -ProductParentList=Liste des produits/services virtuels/packages avec ce produit comme composante +ProductParentList=Liste des produits/services virtuels avec ce produit comme composante ErrorAssociationIsFatherOfThis=L'un des produits sélectionnés est parent du produit en cours DeleteProduct=Supprimer un produit/service ConfirmDeleteProduct=Êtes-vous sûr de vouloir supprimer ce produit/service ? diff --git a/htdocs/langs/fr_FR/sendings.lang b/htdocs/langs/fr_FR/sendings.lang index 064e6d15f54f8b5b452c13fa5589b352fc2704ea..7ad7e30a94d2c4d23cebff5abd94f11c788dbe9f 100644 --- a/htdocs/langs/fr_FR/sendings.lang +++ b/htdocs/langs/fr_FR/sendings.lang @@ -20,6 +20,7 @@ CreateASending=Créer une expédition QtyShipped=Qté. expédiée QtyToShip=Qté. à expédier QtyReceived=Qté. reçue +QtyInOtherShipments=Qté dans les autres expéditions KeepToShip=Reste à expédier OtherSendingsForSameOrder=Autres expéditions pour cette commande SendingsAndReceivingForSameOrder=Expéditions et réceptions pour cette commande @@ -40,6 +41,8 @@ DocumentModelMerou=Modèle Merou A5 WarningNoQtyLeftToSend=Alerte, aucun produit en attente d'expédition. StatsOnShipmentsOnlyValidated=Statistiques effectuées sur les expéditions validées uniquement. La date prise en compte est la date de validation (la date de prévision de livraison n'étant pas toujours renseignée). DateDeliveryPlanned=Date prévue de livraison +RefDeliveryReceipt=Ref bon de réception +StatusReceipt=Status du bon de réception DateReceived=Date de réception réelle SendShippingByEMail=Envoyer bon d'expédition par email SendShippingRef=Envoi du bordereau d'expédition %s diff --git a/htdocs/langs/fr_FR/stocks.lang b/htdocs/langs/fr_FR/stocks.lang index 9c8e6be412fcdc92e552b1b30410a768807474c5..1c9bf7281b6d80ba8da4ea0b8be63503214233ca 100644 --- a/htdocs/langs/fr_FR/stocks.lang +++ b/htdocs/langs/fr_FR/stocks.lang @@ -2,6 +2,7 @@ WarehouseCard=Fiche entrepôt Warehouse=Entrepôt Warehouses=Entrepôts +ParentWarehouse=Entrepôt parent NewWarehouse=Nouvel entrepôt ou zone de stockage WarehouseEdit=Édition entrepôt MenuNewWarehouse=Nouvel entrepôt diff --git a/htdocs/langs/fr_FR/supplier_proposal.lang b/htdocs/langs/fr_FR/supplier_proposal.lang index bea3ad4f31f03e8b392bfe8f3b496598270bee94..764b094ae687a1bfee1bc88e48b98fcb457b5d84 100644 --- a/htdocs/langs/fr_FR/supplier_proposal.lang +++ b/htdocs/langs/fr_FR/supplier_proposal.lang @@ -28,6 +28,7 @@ SupplierProposalStatusClosed=Fermé SupplierProposalStatusSigned=Accepté SupplierProposalStatusNotSigned=Refusé SupplierProposalStatusDraftShort=Brouillon +SupplierProposalStatusValidatedShort=Validé SupplierProposalStatusClosedShort=Fermé SupplierProposalStatusSignedShort=Accepté SupplierProposalStatusNotSignedShort=Refusé @@ -50,5 +51,5 @@ ListOfSupplierProposal=Liste des demandes de propositions de fournisseur ListSupplierProposalsAssociatedProject=Liste des propositions commerciales fournisseurs liées à un projet SupplierProposalsToClose=Propositions commerciales fournisseurs à fermer SupplierProposalsToProcess=Propositions commerciales fournisseurs à traiter -LastSupplierProposals=Dernières demande de prix +LastSupplierProposals=Les %s dernières demandes de prix AllPriceRequests=Toutes les demandes de prix diff --git a/htdocs/langs/fr_FR/trips.lang b/htdocs/langs/fr_FR/trips.lang index 4780d57793b54e05cf5c970123287035bc1ed012..8dc20e2b67e55a9301410c737237a41fccf26c35 100644 --- a/htdocs/langs/fr_FR/trips.lang +++ b/htdocs/langs/fr_FR/trips.lang @@ -8,6 +8,7 @@ TripCard=Fiche note de frais AddTrip=Créer note de frais ListOfTrips=Liste des notes de frais ListOfFees=Liste des notes de frais +TypeFees=Types de déplacement et notes de frais ShowTrip=Afficher la note de frais NewTrip=Nouvelle note de frais CompanyVisited=Société/institution visitée diff --git a/htdocs/langs/fr_FR/workflow.lang b/htdocs/langs/fr_FR/workflow.lang index 29b79621b7b90cbab939b8cfaf618901050e88e2..a9eb29c7a8df2f2e29f80ffffdee9ac3c79fc414 100644 --- a/htdocs/langs/fr_FR/workflow.lang +++ b/htdocs/langs/fr_FR/workflow.lang @@ -10,4 +10,6 @@ descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Classer facturée la proposition comme descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classer facturée la ou les commandes clients source quand la facture client dérivée est classée payée descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classer facturée la ou les commandes clients source lorsque la facture client dérivée est validée descWORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL=A la validation d'une commande, classer la proposition commerciale source "facturée" -descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Classez livré les commandes liées sur validation d'une expédition, si la quantité livrée est la même que celle de la commande +descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Classez la commande liée à expédiée quand une expédition est validée et que la quantité expédiée totale est la même que dans la commande +AutomaticCreation=Création automatique +AutomaticClassification=Classification automatique diff --git a/htdocs/langs/nl_BE/accountancy.lang b/htdocs/langs/nl_BE/accountancy.lang index 604986cae773bc19be1c6cf7f9e32bd054a77329..4ebecd4b78a608a32c4f724db6b9afa46f6e27a6 100644 --- a/htdocs/langs/nl_BE/accountancy.lang +++ b/htdocs/langs/nl_BE/accountancy.lang @@ -13,7 +13,6 @@ Selectchartofaccounts=Selecteer een kaart van accounts Addanaccount=Voeg een boekhouder account toe AccountAccounting=Boekhouder account AccountAccountingSuggest=Boekhouder account voorstel -Reports=Rapporten Bookkeeping=Grootboek CAHTF=Totaal leveranciersaankoop voor BTW Processing=Verwerken diff --git a/htdocs/langs/pt_BR/accountancy.lang b/htdocs/langs/pt_BR/accountancy.lang index d12cc67e3ebaf832b8e4af69dbdeed498b8439c6..a026fa5d2c89152dc011897f45620ea9d34e697a 100644 --- a/htdocs/langs/pt_BR/accountancy.lang +++ b/htdocs/langs/pt_BR/accountancy.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - en_US - Accounting Expert +# Dolibarr language file - Source file is en_US - accountancy ACCOUNTING_EXPORT_SEPARATORCSV=Separador de coluna para o arquivo de exportação ACCOUNTING_EXPORT_DATE=Formato de data para arquivo de exportação ACCOUNTING_EXPORT_PIECE=Exportar a quantidade @@ -8,47 +8,31 @@ ACCOUNTING_EXPORT_AMOUNT=Exportar o montante? ACCOUNTING_EXPORT_DEVISE=Exportar Moedas Selectformat=Selecione o formato do arquivo ACCOUNTING_EXPORT_PREFIX_SPEC=Especifique o prefixo do nome do arquivo - -AccountancySetupDoneFromAccountancyMenu=A maioria das configurações da Contabilidade é feita a partir do menu %s ConfigAccountingExpert=Configuração do módulo específico de contabilidade -Journalization=Lançamento no Livro Journaux=Diários JournalFinancial=Diários financeiros -BackToChartofaccounts=Voltar ao plano de contas -Chartofaccounts=Plano de contas - AccountancyArea=Área da Contabilidade AccountancyAreaDescIntro=O uso do módulo Contabilidade é feito em diversas etapas: AccountancyAreaDescActionOnce=As ações a seguir são normalmente realizadas apenas uma vez, ou uma vez por ano... AccountancyAreaDescActionFreq=As ações a seguir são normalmente executadas a cada mês, semana ou dia para grandes empresas... -AccountancyAreaDescChartModel=ETAPA %s: Criar um modelo de gráfico de conta a partir do menu %s AccountancyAreaDescChart=ETAPA %s: Criar ou verificar o conteúdo do seu gráfico de conta a partir do menu %s +AccountancyAreaDescProd=ETAPA %s: Verifique se a vinculação entre os produtos/serviços e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta nas linhas da sua fatura.<br>Para isto você pode usar a entrada do menu %s. AccountancyAreaDescBank=ETAPA %s: Verifique se a vinculação entre as contas bancárias e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta nas suas linhas de pagamento.<br>Para isto, vá até o cartão de cada conta financeira. Você pode iniciar a partir da página %s. AccountancyAreaDescVat=ETAPA %s: Verifique se a vinculação entre o pagamento do ICMS e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta no registro relacionado aos pagamentos do ICMS.<br>Você pode definir as contas da Contabilidade para uso para cada ICMS a partir da página %s. AccountancyAreaDescSal=ETAPA %s: Verifique se a vinculação entre o pagamento dos salários e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta no registro relacionado ao pagamento dos salários.<br>Para isto você pode usar a entrada do menu %s. AccountancyAreaDescContrib=ETAPA %s: Verifique se a vinculação entre as despesas especiais (taxas diversas) e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta no registro relacionado ao pagamento das taxas.<br>Para isto você pode usar a entrada do menu %s. AccountancyAreaDescDonation=ETAPA %s: Verifique se a vinculação entre as doações e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta no registro relacionado ao pagamento das doações.<br>Você pode definir a conta dedicada para isto a partir da entrada do menu %s. -AccountancyAreaDescMisc=ETAPA %s: Verifique se a vinculação padrão entre as linhas das transações diversas e a conta da Contabilidade foi feita. Conclua as vinculações faltantes.<br>Para isto você pode usar a entrada do menu %s. -AccountancyAreaDescProd=ETAPA %s: Verifique se a vinculação entre os produtos/serviços e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta nas linhas da sua fatura.<br>Para isto você pode usar a entrada do menu %s. - AccountancyAreaDescCustomer=ETAPA %s: Verifique se a vinculação entre as linhas da fatura de um cliente existente e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Uma vez concluída a vinculação, o aplicativo será capaz de registrar as transações na Contabilidade geral em um clique.<br>Para isto você pode usar a entrada do menu %s. AccountancyAreaDescSupplier=ETAPA %s: Verifique se a vinculação entre as linhas da fatura de um fornecedor existente e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Uma vez concluída a vinculação, o aplicativo será capaz de registrar as transações na Contabilidade geral em um clique.<br>Para isto você pode usar a entrada do menu %s. AccountancyAreaDescWriteRecords=ETAPA %s: Grave as transações na Contabilidade Geral. Para isto, vá para cada Registro, e clique no botão "Registrar as transações na Contabilidade Geral". -AccountancyAreaDescAnalyze=ETAPA %s: Adicionar ou editar as transações existentes, gerar os relatórios e exportar. - -AccountancyAreaDescClosePeriod=ETAPA %s: Fechar o período de forma que não possamos fazer modificações no futuro. - -MenuAccountancy=Contabilidade Selectchartofaccounts=Selecione gráfico ativo de contas -ChangeAndLoad=Alterar e carregar Addanaccount=Adicionar uma conta contábil AccountAccounting=Conta contábil AccountAccountingShort=Conta AccountAccountingSuggest=Sugerir Conta de Contabilidade -MenuDefaultAccounts=Contas padrão -MenuProductsAccounts=Contas de produto -ProductsBinding=Contas dos produtos Ventilation=Vinculando para as contas +ProductsBinding=Contas dos produtos +MenuAccountancy=Contabilidade CustomersVentilation=Vinculando as faturas do cliente SuppliersVentilation=Vinculando as faturas do fornecedor CreateMvts=Criar nova transação @@ -56,61 +40,44 @@ UpdateMvts=Modificação de uma transação WriteBookKeeping=Diário de transações em Contabilidade Geral Bookkeeping=Livro razão AccountBalance=Saldo da conta - CAHTF=Total de Compras em fornecedores sem Impostos InvoiceLines=Linhas da fatura a vincular InvoiceLinesDone=Linhas das faturas vinculadas IntoAccount=Vincular linha com conta contábil - Ventilate=Vincular -LineId=Linha da ID -Processing=Processando EndProcessing=Processo foi finalizado. SelectedLines=Linhas selecionadas Lineofinvoice=Linha da fatura -NoAccountSelected=Nenhuma conta da Contabilidade selecionada VentilatedinAccount=Vinculado a conta contábil com sucesso NotVentilatedinAccount=Não vinculado a conta contábil XLineSuccessfullyBinded=%s produtos/serviços vinculados com sucesso a uma conta da Contabilidade XLineFailedToBeBinded=%s produtos/serviços não estão vinculados a qualquer conta da Contabilidade - -ACCOUNTING_LIMIT_LIST_VENTILATION=Numero de elementos para vincular, mostrado por página (máximo recomendado: 50) +ACCOUNTING_LIMIT_LIST_VENTILATION=Numero de elementos para vincular, mostrado por página (máximo recomendado: 50) ACCOUNTING_LIST_SORT_VENTILATION_TODO=Iniciar a página "Vinculações a fazer" ordenando pelos elementos mais recentes ACCOUNTING_LIST_SORT_VENTILATION_DONE=Iniciar a página "Vinculações feitas" ordenando pelos elementos mais recentes - ACCOUNTING_LENGTH_DESCRIPTION=Truncar a descrição de Produtos & Serviços nas listagens, após x caracteres (Melhor = 50) ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT=Truncar a descrição da conta de Produtos & Serviços nas listagens, após X caracteres (Melhor = 50) ACCOUNTING_LENGTH_GACCOUNT=Tamanho das contas contábeis geral ACCOUNTING_LENGTH_AACCOUNT=Tamanho das contas contábeis de terceiros ACCOUNTING_MANAGE_ZERO=Gerenciar o zero no fim de uma conta da Contabilidade. Necessário em alguns países. Desabilitado como padrão. Se habilitado, você deve também definir os 2 parâmetros seguintes (ou isto é ignorado). BANK_DISABLE_DIRECT_INPUT=Desabilitar o registro direto da transação na conta bancária - ACCOUNTING_SELL_JOURNAL=Resumo diário das Vendas ACCOUNTING_PURCHASE_JOURNAL=Resumo diário das Compras ACCOUNTING_MISCELLANEOUS_JOURNAL=Diário diversos ACCOUNTING_EXPENSEREPORT_JOURNAL=Diário de relatórios de despesas -ACCOUNTING_SOCIAL_JOURNAL=Diário social - ACCOUNTING_ACCOUNT_TRANSFER_CASH=Conta de transferência ACCOUNTING_ACCOUNT_SUSPENSE=Conta de espera DONATION_ACCOUNTINGACCOUNT=Conta para o registro de doações - ACCOUNTING_PRODUCT_BUY_ACCOUNT=Conta contábil por padrão para produtos comprados (se não for definido na listagem dos produtos) ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Conta contábil por padrão para os produtos vendidos (se não for definido na listagem dos produtos) ACCOUNTING_SERVICE_BUY_ACCOUNT=Conta contábil por padrão para os serviços comprados (se não for definido na listagem de serviços) ACCOUNTING_SERVICE_SOLD_ACCOUNT=Conta contábil por padrão para os serviços vendidos (se não for definido na listagem de serviços) - -Doctype=Tipo de documento -Docdate=Data Docref=Referência Code_tiers=Terceiro Labelcompte=Conta rótulo Sens=Significado -Codejournal=Diário NumPiece=Número da peça -TransactionNumShort=Nº da transação AccountingCategory=Categoria contábil -GroupByAccountAccounting=Agrupar pela conta da Contabilidade NotMatch=Não Definido DeleteMvt=Excluir as linhas da Contabilidade geral DelYear=Ano a ser deletado @@ -125,35 +92,27 @@ VATAccountNotDefined=Conta para ICMS não definida ThirdpartyAccountNotDefined=Conta para terceiro não definida ProductAccountNotDefined=Conta para produto não definida BankAccountNotDefined=Conta para o banco não definida -CustomerInvoicePayment=Contas Recebidas ThirdPartyAccount=Conta de terceiro NewAccountingMvt=Nova transação NumMvts=Número da transação ListeMvts=Lista de movimentações ErrorDebitCredit=Débito e Crédito não pode ter valor preenchido ao mesmo tempo - ReportThirdParty=Lista de contas de terceiros DescThirdPartyReport=Consulte aqui a lista dos terceiros, clientes e fornecedores, e as suas contas contábeis ListAccounts=Lista das contas contábeis - Pcgtype=Classes de conta Pcgsubtype=Sob classe de conta - TotalVente=Volume total negociado sem Impostos TotalMarge=Margem de vendas totais - DescVentilCustomer=Consulte aqui a lista linhas de pedidos de clientes vinculadas (ou não) a uma conta contábil de produto DescVentilMore=Na maioria dos casos, se você usa produtos ou serviços pré-definidos e define o número da conta no cartão do produto/serviço, o aplicativo será capaz de realizar todas as vinculações entre as linhas da sua fatura e a conta da Contabilidade do seu gráfico de contas, apenas com um clique no botão <strong>"%s"</strong>. Se a conta não foi definida nos cartões do produto/serviço ou se você ainda tem alguma linha não vinculada a qualquer conta, você terá que fazer uma vinculação manual a partir do menu "<strong>%s</strong>". DescVentilDoneCustomer=Consulte aqui a lista com as linhas das faturas dos clientes e a conta da Contabilidade dos seus produtos DescVentilTodoCustomer=Linhas da fatura ainda não vinculadas à conta da Contabilidade do produto ChangeAccount=Mudar a conta da Contabilidade do produto/serviço para as linhas selecionadas com a seguinte conta da Contabilidade -Vide=- DescVentilSupplier=Consulte aqui a lista das linhas da fatura do fornecedor vinculadas ou ainda não vinculadas a uma conta da Contabilidade de um produto DescVentilDoneSupplier=Consulte aqui a lista das linhas de faturas de fornecedores e sua conta de contabilidade - ValidateHistory=Vincular Automaticamente AutomaticBindingDone=Vinculação automática realizada - ErrorAccountancyCodeIsAlreadyUse=Erro, você não pode excluir esta conta contábil, pois ela esta em uso MvtNotCorrectlyBalanced=Movimento sem o equilíbrio correto. Crédito = %s. Débito = %s FicheVentilation=Cartão de vinculação @@ -162,14 +121,7 @@ GeneralLedgerSomeRecordWasNotRecorded=Algumas das transações poderão não ser NoNewRecordSaved=Nenhum novo registro salvo ListOfProductsWithoutAccountingAccount=Lista de produtos não vinculados a qualquer conta da Contabilidade ChangeBinding=Alterar a vinculação - -## Admin ApplyMassCategories=Aplicar categorias em massa - -## Export -Exports=Exportações -Export=Exportar -Modelcsv=Modelo de exportação OptionsDeactivatedForThisExportModel=Para este modelo de exportação, as opções são desativadas Selectmodelcsv=Escolha um modelo de exportação Modelcsv_normal=Exportação clássica @@ -180,11 +132,8 @@ Modelcsv_ciel=Exportar para Sage Ciel Compta ou Compta Evolution Modelcsv_quadratus=Exportar para Quadratus QuadraCompta Modelcsv_ebp=Exportar para EBP Modelcsv_cogilog=Exportar para Cogilog - -## Tools - Init accounting account on product / service InitAccountancy=Contabilidade Inicial InitAccountancyDesc=Esta página pode ser usada para inicializar uma conta da Contabilidade dos produtos e serviços que não possuem uma conta da Contabilidade definida para vendas e compras. -DefaultBindingDesc=Esta página pode ser usada para definir a conta padrão a ser usada para conectar o registro das transações sobre o pagamento de salários, doações, taxas e o ICMS quando nenhuma conta da Contabilidade específica tiver sido definida. Options=Opções OptionModeProductSell=Modo vendas OptionModeProductBuy=Modo compras @@ -192,18 +141,12 @@ OptionModeProductSellDesc=Exibir todos os produtos sem uma conta da Contabilidad OptionModeProductBuyDesc=Exibir todos os produtos sem uma conta da Contabilidade definida para compras. CleanFixHistory=Remover o código da Contabilidade das linhas que não existem nos gráficos da conta CleanHistory=Redefinir todas as vinculações para o ano selecionado - -## Dictionary Range=Faixa da conta da Contabilidade Calculated=Calculado Formula=Fórmula - -## Error ErrorNoAccountingCategoryForThisCountry=Nenhuma categoria da Contabilidade disponível para o país %s (Veja Início - Configuração - Dicionários) ExportNotSupported=O formato de exportação definido não é suportado nesta página BookeppingLineAlreayExists=Linhas já existentes na Contabilidade - Binded=Linhas vinculadas ToBind=Linhas a vincular - WarningReportNotReliable=Alerta, este relatório não está baseado na Contabilidade Geral, portanto não é ainda confiável. Ele será substituído por um relatório correto na próxima versão. diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang index 2fa30545ed556f6f18dea39f7d6d71adb88aa6bd..cb109ae818e47debbdc5210c03429729f41a485a 100644 --- a/htdocs/langs/pt_BR/admin.lang +++ b/htdocs/langs/pt_BR/admin.lang @@ -1,6 +1,4 @@ # Dolibarr language file - Source file is en_US - admin -Foundation=Fundação -Version=Versão VersionProgram=Versão Programa VersionLastInstall=Versão de instalação inicial VersionLastUpgrade=Atualização versão mais recente @@ -48,11 +46,9 @@ RemoveLock=Remove o arquivo <b>%s</ b> se tiver permissão de usar a ferramente RestoreLock=Restaura o arquivo <b>%s</b>, com permissão de leitura, para desabilitar qualquer serviço de atualição SecuritySetup=Conf. de Segurança SecurityFilesDesc=Defina aqui as opções relacionadas à segurança sobre o carregamento (upload) de arquivos. -ErrorModuleRequirePHPVersion=Erro, este módulo requer uma versão %s ou superior de PHP ErrorModuleRequireDolibarrVersion=Erro, este módulo requer uma versão %s ou superior do Dolibarr ErrorDecimalLargerThanAreForbidden=Erro, número maior que <b>%s</b> e não é suportada pelo dolibarr. DictionarySetup=Configuração Dicionário -Dictionary=Dicionários ErrorReservedTypeSystemSystemAuto=A Variável 'system' e 'systemauto' é reservada. Você pode usar 'user' como variável para adicionar sua própria gravação ErrorCodeCantContainZero=A variável não pode conter valor "0" (zero) DisableJavascript=Desativar as funções Javascript e Ajax @@ -71,12 +67,6 @@ ThemeCurrentlyActive=Tema Ativo CurrentTimeZone=Timezone PHP (do servidor apache) MySQLTimeZone=Timezone Mysql (do servidor sql) TZHasNoEffect=A data é armazenada e retornada pelo servidor sql se eles manterem a string apresentada. A timezone é resultado somente se for usado a função UNIX_TIMESTAMP (Não deve ser usada pelo Dolibarr, se não a database TZ não terá efeito, mesmo se tivesse trocada depois da data ter entrado). -Space=Área -Table=Tabela -Fields=Campos -Index=Index -Mask=Mask -NextValue=Próximo Valor NextValueForInvoices=Próximo Valor (Faturas) NextValueForCreditNotes=Próximo Valor (Notas de Crédito) NextValueForDeposit=Próximo Valor (Depósito) @@ -85,10 +75,10 @@ MustBeLowerThanPHPLimit=OBS: Tamanho máximo de upload é <b>%s</b> %s de máxim NoMaxSizeByPHPLimit=Nenhum limite foi configurado no seu PHP MaxSizeForUploadedFiles=Tamanho Máximo para uploads de arquivos ('0' para proibir o carregamento) UseCaptchaCode=Usar captcha para login (recomendado se os usuários tiverem acesso ao Dolibarr pela internet) -AntiVirusCommand= Caminho completo para antivirus -AntiVirusCommandExample= Exemplo com o ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Exemplo com o ClamAv: /usr/bin/clamscan (UNIX) -AntiVirusParam= Mais parâmetros em linha de comando (CLI) -AntiVirusParamExample= Exemplo com o ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusCommand=Caminho completo para antivirus +AntiVirusCommandExample=Exemplo com o ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Exemplo com o ClamAv: /usr/bin/clamscan (UNIX) +AntiVirusParam=Mais parâmetros em linha de comando (CLI) +AntiVirusParamExample=Exemplo com o ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Conf. do Módulo Contabilidade UserSetup=Conf. do Gestor de usuários MultiCurrencySetup=Configuração de múltiplas moedas @@ -96,18 +86,13 @@ MenuLimits=Limites e Precisão MenuIdParent=ID do menu pai DetailMenuIdParent=ID do menu pai (vazio (NULL) para menu no topo) DetailPosition=Define as posições do menu em ordem numérica -AllMenus=Todos NotConfigured=Módulo não está configurado Active=Ativo SetupShort=Conf. -OtherOptions=Outras Opções OtherSetup=Outras Configurações -CurrentValueSeparatorDecimal=Separador decimal CurrentValueSeparatorThousand=Separador de milhar -Destination=Destino IdModule=Módulo ID IdPermissions=Permissão ID -Modules=Módulos LanguageBrowserParameter=Parâmetro de Linguagem %s LocalisationDolibarrParameters=Parâmetros de Localização ClientTZ=Fuso Horário do cliente (usuário) @@ -118,16 +103,12 @@ DaylingSavingTime=Horário de verão CurrentHour=Horário PHP (servidor) CurrentSessionTimeOut=A sessão expirou YouCanEditPHPTZ=Para trocar diferente PHP 'timezone' (não requerido), você pode tentar adicionando um arquivo .htacces com uma linha tipo essa "SetEnv TZ Europe/Paris" -Box=Widget -Boxes=Widgets MaxNbOfLinesForBoxes=Número máximo de linahs para os widgets PositionByDefault=Posição Padrão(default) -Position=Posição MenusDesc=O Gerenciador de Menu, define o conteúdo das barras de menu (Horizontal e Vertical). MenusEditorDesc=O Editor de menu permite definir entradas personalizadas ao menu.<br />Use-o com cuidado para evitar instabilidades e que os menus fiquem totalmente inacessiveis.<br />Alguns módulos adicionam entradas do menu ( no menu <b>Geral</b> principalmente). Se você remover algumas destas entradas por engano, você poderá restaurá-las desabilitando e habilitando o módulo novamente. MenuForUsers=Menu para os Usuários LangFile=Arquivo .lang -System=Sistema SystemInfo=Informações de Sistema SystemToolsArea=Área de Ferramentas do sistema SystemToolsAreaDesc=Essa área dispõe de funções administrativas. Use esse menu para escolher as funções que você está procurando. @@ -143,8 +124,6 @@ PurgeNDirectoriesDeleted=<b>%s</b> Arquivos o diretórios eliminados PurgeAuditEvents=Eliminar os eventos de segurança ConfirmPurgeAuditEvents=Você tem certeza que deseja limpar todos os eventos de segurança? Todos os registros de segurança serão excluídos, nenhum outro dado será removido. GenerateBackup=Gerar Backup -Backup=Backup -Restore=Restaurar RunCommandSummary=Backup foi iniciado com o seguinte comando BackupResult=Resultado de backup BackupFileSuccessfullyCreated=Sucesso em gerar o arquivo de backup! =D @@ -163,15 +142,12 @@ CommandsToDisableForeignKeysForImport=Comando para desativar as chaves estrangei CommandsToDisableForeignKeysForImportWarning=Mandatório se você quiser ser capaz de restaurar seu 'sql dump' depois ExportCompatibility=Compatibilidade de gerar arquivos de exportação MySqlExportParameters=Parâmetros de exportação do MySql -PostgreSqlExportParameters= Parâmetros de exportação do PostgreSQL +PostgreSqlExportParameters=Parâmetros de exportação do PostgreSQL UseTransactionnalMode=Utilizar o modo transicional(transactional mode) FullPathToMysqldumpCommand=Caminho completo para o comando mysqldump FullPathToPostgreSQLdumpCommand=Caminho completo para o comando pg_dump -ExportOptions=Opções de exportação AddDropDatabase=Adicionar o comando 'DROP DATABASE' AddDropTable=Adicionar o comando 'DROP TABLE' -ExportStructure=Estrutura -NameColumn=Nome das colunas ExtendedInsert=Extender o INSERT NoLockBeforeInsert=Não travar comando antes do INSERT DelayedInsert=Inserir Atraso @@ -180,7 +156,6 @@ IgnoreDuplicateRecords=Ignorar erros de registro duplicado (INSERT IGNORE) AutoDetectLang=Autodetecção de idioma pelo navegador FeatureDisabledInDemo=Algumas funções desabilitada no Demo FeatureAvailableOnlyOnStable=Funcionalidade somente disponível em versões estáveis oficiais -Rights=Permissões BoxesDesc=Os widgets são componentes que exibem alguma informação que você pode adicionar para personalizar algumas páginas. Você pode escolher entre a exibição ou não do widget pela seleção da página de destino e clicando em "Ativar", ou clicando na lixeira para desabilitá-lo. OnlyActiveElementsAreShown=Somente elementos de <a href="%s">módulos ativos</a> são mostrado. ModulesDesc=Os módulos do Dolibarr definem qual funcionalidade está habilitada no aplicativo. Alguns módulos exigem permissões que você deve garantir aos usuários, após a habilitação do código. Clique no botão on/off para habilitar um módulo/funcionalidade. @@ -196,9 +171,7 @@ ActivateOn=Ativar ActiveOn=Ativa SourceFile=Arquivo Fonte AvailableOnlyIfJavascriptAndAjaxNotDisabled=Disponível somente se Javascript não estiver desativado -Required=Requerido UsedOnlyWithTypeOption=Usado por alguns opção agenda única -Security=Segurança Passwords=Senhas DoNotStoreClearPassword=Não armazenar senhas em branco no banco de dados, somente armazenar senhas criptografadas (Ativação é Recomendada) MainDbPasswordFileConfEncrypted=Criptografar senha do banco de dados no arquivo conf.php @@ -207,7 +180,6 @@ InstrucToClearPass=Para ter a senha não codificada(limpa) no arquivo <b>conf.ph ProtectAndEncryptPdfFiles=Criptografar a geração de arquivos em PDF (NÃO RECOMENDADO, póis pode deixar instável a geração de PDFs massivos) ProtectAndEncryptPdfFilesDesc=A proteção de um documento PDF o mantém disponível para leitura e impressão em qualquer leitor PDF. Contudo, a edição e a cópia não serão mais possíveis. Favor notar que o uso desta função não permite a criação de um PDF global acumulado (tal como as faturas não pagas). Feature=Destaque -DolibarrLicense=Licença Developpers=Desenvolvedores/Contribuidores OfficialWebSite=Site internacional do Dolibarr OfficialWebSiteLocal=Web site local (%s) @@ -216,14 +188,11 @@ OfficialDemo=Demo online do Dolibarr OfficialMarketPlace=Loja oficial para módulos externos/addons OfficialWebHostingService=Serviços de hospedagem web referenciados (hospedagem na Nuvem) ReferencedPreferredPartners=Parceiro preferido -OtherResources=Outros recursos ForDocumentationSeeWiki=Documentos para usuários e desenvolvedores (Doc, FAQs...), <br>de uma olhada no Dolibarr Wiki:<br><b><a href="%s" target="_blank">%s</a></b> ForAnswersSeeForum=Para outras questões/ajudas, você pode usar o forum do Dolibar:<br><b><a href="%s" target="_blank">%s</a></b> HelpCenterDesc1=Essa área pode ajudar você a conseguir serviço de suporte no Dolibarr. HelpCenterDesc2=Uma parte desse serviço está disponivel em <b>inglês</b>. CurrentMenuHandler=Gestor atual de menu -MeasuringUnit=Unidade de medida -Emails=E-Mails EMailsSetup=Conf. de E-Mails EMailsDesc=Essa página permite você a sobrescrever os seus parâmetros PHP para enviar e-mails. Na maioria dos casos dos sistemas Unix/Linux OS, a configuração já está correta, tornando desnecessário esses parâmetros. MAIN_MAIL_SMTP_PORT=Porta SMTP/SMTPS (Como padrão em php.ini: <b>%s</b>) @@ -232,31 +201,26 @@ MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=Porta SMTP/SMTPS (Não definido no P MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=Servidor SMTP/SMTPS (Não definido no PHP nos sistemas tipo Unix) MAIN_MAIL_EMAIL_FROM=E-Mail de envio para envios automáticos (Como padrão no php.ini: <b>%s</b>) MAIN_MAIL_ERRORS_TO=Remetente do e-mail usado para o erro retorna e-mails enviados -MAIN_MAIL_AUTOCOPY_TO= Enviar sistematicamente uma cópia carbono oculta de todos os e-mails enviados para +MAIN_MAIL_AUTOCOPY_TO=Enviar sistematicamente uma cópia carbono oculta de todos os e-mails enviados para MAIN_DISABLE_ALL_MAILS=Desabilita o envido de todos os E-Mails (Para testes ou demo) MAIN_MAIL_SENDMODE=Método usado para o envio de E-Mails MAIN_MAIL_SMTPS_ID=ID SMTP se a autentificação é exigida MAIN_MAIL_SMTPS_PW=Senha SMTP se a autenticação é exigida -MAIN_MAIL_EMAIL_TLS= Usar criptografia TLS (SSL) -MAIN_MAIL_EMAIL_STARTTLS= Use criptografia TLS (STARTTLS) +MAIN_MAIL_EMAIL_TLS=Usar criptografia TLS (SSL) +MAIN_MAIL_EMAIL_STARTTLS=Use criptografia TLS (STARTTLS) MAIN_DISABLE_ALL_SMS=Desabilitar todos envios de SMS (Para testes ou demo) MAIN_SMS_SENDMODE=Método usado para enviar SMS MAIN_MAIL_SMS_FROM=Número de telefone padrão para o envio de SMS -MAIN_MAIL_DEFAULT_FROMTYPE=Remetente do e-mail como padrão para envios manuais (e-mail do usuário ou e-mail da empresa) -UserEmail=E-mail do usuário -CompanyEmail=E-mail da empresa FeatureNotAvailableOnLinux=Função não disponível para sistemas tipo Unix. Teste de envio local. SubmitTranslation=Se a tradução deste idioma não estiver completa ou se encontrar erros, você poderá corrigir editando os arquivos no diretório <b>langs/%s</b> e submeter sua alteração em www.transifex.com/dolibarr-association/dolibarr/ SubmitTranslationENUS=Se a tradução para este idioma não está completa ou você encontrar erros, você pode corrigir pela edição dos arquivos no diretório <b>langs/%s</b> e enviar os arquivos modificados para dolibarr.org/forum ou para os desenvolvedores em github.com/Dolibarr/dolibarr. ModuleSetup=Conf. do módulo ModulesSetup=Conf. dos módulos -ModuleFamilyBase=Sistema ModuleFamilyCrm=Gestão de Relacionamento com o Cliente (CRM) ModuleFamilySrm=Gestor da Relação com o Fornecedor (SRM) ModuleFamilyProducts=Gestão de Produtos (GP) ModuleFamilyHr=Gestão de Recursos Humanos (RH) ModuleFamilyProjects=Projetos -ModuleFamilyOther=Outro ModuleFamilyTechnic=Ferramentas para Módulos Múltiplos ModuleFamilyExperimental=Módulos Experimentais ModuleFamilyFinancial=Módulos Financeiros @@ -268,7 +232,6 @@ MenuAdmin=Editor menus DoNotUseInProduction=Não utilizar em produção ThisIsProcessToFollow=Esse é o processo de configuração: ThisIsAlternativeProcessToFollow=Esta é uma configuração alternativa para o processo: -StepNb=Passo %s FindPackageFromWebSite=Achar um pacote que possue as funções desejadas (por exemplo no site oficial %s). DownloadPackageFromWebSite=Baixar pacote. UnpackPackageInDolibarrRoot=Descompactar pacote dentro do diretório raiz do Dolibarr <b>%s</b> @@ -279,7 +242,6 @@ InfDirExample=<br>Então declara o arquivo conf.php<br> $dolibarr_main_url_root_ YouCanSubmitFile=Selecione o módulo: CurrentVersion=Versão atual do Dolibarr CallUpdatePage=Vá para a página que atualiza a estrutura de banco de dados e os dados:% s. -LastStableVersion=Última versão estável LastActivationDate=Última data de ativação UpdateServerOffline=Atualização de servidor off-line GenericMaskCodes=Você pode criar suas próprias mascaras para gerar as referências automáticas.<br> Como exemplo inicial a mascara <b>'CLI{000}'</b> vai gerar a ref. <b>CLI001</b>,<b>CLI002</b>,<b>...</b> as mascaras são:<br>Mascara de contagem <b>{0000}</b>, essa mascara vai contar para cada nova ref. ex:<b>0001</b>,<b>0002</b>,<b>0003</b>,<b>...</b><br>Mascara de número inicial ex:<b>{000+100}</b> -> <b>101</b>,<b>102</b>,<b>103</b>,<b>...</b> ex2:<b>{0000+123}</b> -> <b>0124</b>,<b>0125</b>,<b>...</b><br>Mascara da data <b>{dd}</b> dias (01 a 31), <b>{mm}</b> mês (01 a 12), <b>{yy} {yyyy}</b> para anos ex:<b>{dd}/{mm}/{yy}</b> -> <b>28/07/15</b><br> @@ -292,7 +254,6 @@ GenericMaskCodes5=Ex:<b>ABC{yy}{mm}-{000000}</b> -> <b>ABC1507-000099</b><br> GenericNumRefModelDesc=Retorna um número costomizado de acordo com a mascara definida. ServerAvailableOnIPOrPort=Servidor disponível no endeço <b>%s</b> e porta <b>%s</b> ServerNotAvailableOnIPOrPort=Servidor não disponível no endereço <b>%s</b> e porta <b>%s</b> -DoTestServerAvailability=Teste de conectividade com o servidor DoTestSend=Teste de Envio DoTestSendHTML=Teste envio HTML ErrorCantUseRazIfNoYearInMask=Erro, não pode utilizar o @ para resetar o contador cada ano se a sequencia {yy} ou {yyyy} não estiver na mascara @@ -300,7 +261,7 @@ ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Erro, não pode utilizar a opç UMask=Parâmetros da UMask para novos arquivos nos sistemas de arquivos Unix/Linux/BSD/Mac. UMaskExplanation=Esses parâmetros permitem você definir permissões por default nos arquivos criado pelo Dolibarr no servidor (Ex: durante upload).<br>Deve ser em formato octal (Ex: 06666 significa que tem permissão de leitura e escrita para todo mundo).<br> Esse parâmetro é inutil para servidores windows. SeeWikiForAllTeam=Veja a página da wiki para ver a lista de todos os autores e essa organização -UseACacheDelay= Atraso para exportação de cache em segundos (0 ou vazio para sem cache) +UseACacheDelay=Atraso para exportação de cache em segundos (0 ou vazio para sem cache) DisableLinkToHelpCenter=Esconder link "<b>Precisa de ajuda ou suporte</b>" na página de login DisableLinkToHelp=Ocultar link para ajuda online "<b>%s</b>" AddCRIfTooLong=Não possui nenhum empacotamento automático, então se a linha sair da página do documento é porque é muito comprida, você precisa adicionar você mesmo um retorno de transporte(carriage) na área de texto. @@ -313,7 +274,6 @@ ListOfDirectoriesForModelGenODT=A lista de diretórios contém modelos de arquiv NumberOfModelFilesFound=Número de arquivos de temas ODT/ODS encontrados nestes diretórios ExampleOfDirectoriesForModelGen=Exemplo de sintaxe:<br>c:\\meudir<br>/home/meudir<br>DOL_DATA_ROOT/ecm/ecmdir FollowingSubstitutionKeysCanBeUsed=<br>Para saber como criar seus temas de documento em ODT, antes de armazená-los nesses diretórios, leia a documentação wiki: -FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template FirstnameNamePosition=Posição do Nome/Sobrenome DescWeather=As seguintes imagens serão mostradas no painel quando o número de ações tardias alcançar os seguintes valores: KeyForWebServicesAccess=Chave para usar o Serviços Web (parâmetro "dolibarrkey" no serviço web) @@ -326,7 +286,6 @@ SmsTestMessage=Mensagem Teste de __PHONEFROM__ para __PHONETO__ ModuleMustBeEnabledFirst=O módulo <b>%s</b> deve estar primeiramente habilitado se você precisa desta funcionalidade. SecurityToken=Chave para proteção das URLs NoSmsEngine=Sem gestor de envido de SMS disponível. Por default o gestor de envio de SMS não vêm instalado (porque depende de um fornecedor externo) mas você pode achar um em %s -PDF=PDF PDFDesc=Você pode configurar cada opção global relacionada com geração de PDF PDFAddressForging=Regras para forjar caixas de endereços HideAnyVATInformationOnPDF=Esconder todas as informações relacionadas com ICMS na geração de PDF @@ -334,7 +293,6 @@ HideDescOnPDF=Esconder todas as descrições de produto na geração de PDF HideRefOnPDF=Esconder ref. dos produtos na geração de PDF HideDetailsOnPDF=Esconder a linha de detalhes dos produtos na geração de PDF PlaceCustomerAddressToIsoLocation=Use a posição padrão francesa (La Poste) para a posição do endereço do cliente -Library=Biblioteca UrlGenerationParameters=Parâmetros para URLs de segurança SecurityTokenIsUnique=Usar um único parâmetro na chave de segurança para cada URL EnterRefToBuildUrl=Entre com a referência do objeto %s @@ -345,22 +303,16 @@ NewVATRates=Taxa de ICMS nova PriceBaseTypeToChange=Modificar os preços com base no valor de referência defino em MassConvert=Lançar converções massivas String=Variável -TextLong=Texto longo Int=Inteiro Float=Flutuante DateAndTime=Data e Hora -Unique=Único Boolean=Boolean -ExtrafieldPhone = Telefone -ExtrafieldPrice = Preço -ExtrafieldMail = E-mail -ExtrafieldSelect = Selecionar lista -ExtrafieldSelectList = Selecionar da tabela -ExtrafieldSeparator=Separador +ExtrafieldMail =E-mail +ExtrafieldSelect =Selecionar lista ExtrafieldPassword=Senha ExtrafieldCheckBox=Caixa de seleção ExtrafieldRadio=Botão de Rádio -ExtrafieldCheckBoxFromList= Caixa de seleção da tabela +ExtrafieldCheckBoxFromList=Caixa de seleção da tabela ExtrafieldLink=Link para um objeto ExtrafieldParamHelpselect=Lista de parâmetros tem que ser tipo chave,valor<br><br> Por exemplo: <br>1,valor1<br>2,valor2<br>3,valor3<br>...<br><br>A ordem da lista tem que depender da outra:<br>1,valor1|parent_list_code:parent_key<br>2,valor2|parent_list_code:parent_key ExtrafieldParamHelpcheckbox=Lista de parâmetros tem que ser tipo chave,valor<br><br> por exemplo: <br>1,valor1<br>2,valor2<br>3,valor3<br>... @@ -371,9 +323,7 @@ ExtrafieldParamHelplink=Os parâmetros devem ser ObjectName:Classpath<br>Sintaxe LibraryToBuildPDF=Biblioteca usada para a geração de PDF WarningUsingFPDF=Aviso: Sua <b>conf.php</b> Contém diretrize <b>dolibarr_pdf_force_fpdf=1</b>. Isso significa que você usa a biblioteca FPDF para gerar arquivos em PDF. Essa biblioteca é velha e não suporta muitas novas funções (Unicode, imagem transparente, cyrillic, línguas arábicas e asiáticas,...), portanto pode ocorrer alguns erros durante a geração de PDF.<br>Para corrigir esse problema e ter todo o suporte na geração de PDF, baixe <a href="http://www.tcpdf.org/" target="_blank">Biblioteca TCPDF</a>, então comente ou remova essa linha <b>$dolibarr_pdf_force_fpdf=1</b>, e adicione essa <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b> LocalTaxDesc=Alguns paises aplicam de 2 a 3 taxas em cada linha de fatura. Se for esse caso, escolha o tipo de segunda e terceira taxa. Os possíveis tipos são:<br>1 : Taxa local aplicam em produtos e serviços sem ICMS (ICMS não é aplicada em taxa local)<br>2 : Taxa local aplicam em produtos e serviços antes do ICMS (ICMS é calculado no montante + taxa local)<br>3 : Taxa local aplicam em produtos sem o ICMS (ICMS não é aplicada na taxa local)<br>4 : Taxa local aplicam nos produtos antes do ICMS (ICMS é calculado no montante + taxa local)<br>5 : Taxa local aplicam no serviço sem o ICMS (ICMS não é aplicado em taxa local)<br>6 : Taxa local aplicam em serviços antes do ICMS (ICMS é calculado no montante + taxa local) -SMS=SMS LinkToTestClickToDial=Entre com um número telefônico para chamar e mostrar um link que testar a URL CliqueParaDiscar para usuário <strong>%s</strong> -RefreshPhoneLink=Atualizar link LinkToTest=Clique no link gerado pelo usuário <strong>%s</strong> (clique no número telefônico para testar) KeepEmptyToUseDefault=Deixe em branco para usar o valor padrão DefaultLink=Link padrão @@ -400,39 +350,28 @@ ModuleCompanyCodePanicum=Retorna um código de contabilidade vazio. ModuleCompanyCodeDigitaria=Código de contabilidade depende do código do terceiro. O Código é composto pelo caractere "C" na primeira posição seguido pelos 5 primeiros caracteres do código do terceiro. Use3StepsApproval=Como padrão, as Ordens de Compra precisam ser criadas e aprovadas por 2 usuários diferentes (uma etapa/usuário para criar e outra etapa/usuário para aprovar. Note que se o usuário tem as permissões para criar e aprovar, uma etapa/usuário será suficiente). Você pode usar esta opção para introduzir uma terceira etapa/usuário para aprovação, se o valor é superior do que um valor dedicado (assim 3 etapas serão necessárias: 1=validação, 2=primeira aprovação e 3=segunda aprovação se o valor for suficiente).<br>Defina isto como vazio se uma aprovação (2 etapas) é suficiente, e defina isto para um valor muito baixo (0.1) se uma segunda aprovação é sempre exigida. UseDoubleApproval=Usar uma aprovação de 3 etapas quando o valor (sem taxa) é maior do que ... - -# Modules Module0Name=Usuários e grupos Module0Desc=Gerenciamento de usuários e grupos -Module1Name=Terceiros Module1Desc=Gerenciamento de empresas e contatos (clientes, prospecção, etc.) -Module2Name=Comercial Module2Desc=Gestor Comercial -Module10Name=Contabilidade Module10Desc=Relatório de Contabilidade Simples (jornais, rotação de estoque) baseado no conteúdo do banco de dados. -Module20Name=Orçamentos Module20Desc=Gestor de Orçamentos Module22Name=E-Mails Massivos Module22Desc=Envio de E-Mails Massivos (spam) -Module23Name=Energia Module23Desc=Monitoramento de Consumo de Energia Module25Name=Pedidos de Clientes Module25Desc=Gestor de Pedidos de Clientes Module30Name=Faturas Module30Desc=Gestor de Faturas e Notas de Créditos para Clientes. Gestor de faturas para Fornecedores -Module40Name=Fornecedores Module40Desc=Gestor de Fornecedores e Compra (Pedidos e Faturas) Module42Name=Registros Module42Desc=Recursos para registro (arquivo, syslog, etc.) -Module49Name=Editores Module49Desc=Gestor de Editores -Module50Name=Produtos Module50Desc=Gestor de Produtos Module51Name=Cartas Massivos Module51Desc=Gestão de correspondência do massa Module52Name=Estoques Module52Desc=Gestor de Estoques (produtos) -Module53Name=Serviços Module53Desc=Gestor de Serviços Module54Name=Contratos/Assinaturas Module54Desc=Gestor de Contratos (serviços e assinaturas recorrentes) @@ -444,53 +383,39 @@ Module57Name=Ordens de pagamento bancárias diretas Module57Desc=Gerenciamento dos pedidos de pagamento com Débito Direto. Isto inclui a geração do arquivo SEPA para os países europeus. Module58Name=CliqueParaDiscarl Module58Desc=Integração do Sistema CliqueParaDiscar (Asterisk, etc.) -Module59Name=Bookmark4u Module59Desc=Adicione uma função para gerar uma conta Bookmark4u de uma conta Dolibarr -Module70Name=Intervenções Module70Desc=Gestor de Intervenções Module75Name=Despesas e Notas de Viagem Module75Desc=Gestor de Despesas e Notas de Viagem. Administração das notas de despesas e deslocamentos Module80Name=Fretes Module80Desc=Gestor de Fretes e Carregamentos -Module85Name=Bancos e Caixas Module85Desc=Gestor de Bancos e Caixas -Module100Name=Site Externo Module100Desc=Incluir seu site no menu superior do Dolibarr Module105Name=Carteiro e SPIP Module105Desc=Carteiro ou Interface SPIP para Módulo MembroMailman or SPIP interface for member module -Module200Name=LDAP Module200Desc=Diretório de sincronização do LDAP -Module210Name=PostNuke -Module210Desc=Integração com PostNuke Module240Name=Exportações de Dados Module240Desc=Ferramenta para exportar dados do Dolibarr (com assistentes) Module250Name=Importação de Dados Module250Desc=Ferramenta para importar dados para o Dolibarr (com assistentes) -Module310Name=Membros Module310Desc=Gestor de Associação de Membros -Module320Name=RSS Feed Module320Desc=Adiciona um RSS feed dentro das páginas de tela do Dolibarr Module330Name=Marcadores de Página Module330Desc=Gerenciamento de agendamentos Module400Name=Projetos Module400Desc=Gestor de Projetos dentro de outros módulos -Module410Name=Webcalendar Module410Desc=Integração do Webcalendar Module500Name=Taxas, Contribuições Sociais e Dividendos Module500Desc=Gestor Taxas, Contribuições Sociais e Dividentos Module510Name=Contratos e salários do empregado Module510Desc=Gerenciamento dos contratos, salários e pagamentos dos empregados -Module520Name=Empréstimo Module520Desc=Gestão dos empréstimos -Module600Name=Notificações Module600Desc=Enviar notificações por e-mail (disparadas por alguns eventos comerciais) para os usuários (configuração definida para cada usuário), contatos de terceiros (configuração definida para cada terceiro) ou para e-mails fixos Module700Name=Doações Module700Desc=Gestor de Doações -Module770Name=Relatórios de despesas Module770Desc=Gestão e reivindicação de relatórios de despesas (transporte, refeição, ...) Module1120Name=Fornecedor - proposta comercial Module1120Desc=Pedido fornecedor - proposta comercial e preços -Module1200Name=Mantis Module1200Desc=Integração Mantis Module1400Name=Contabilidade Module1400Desc=Gestor de Contabilidade (duas partes) @@ -502,7 +427,6 @@ Module2000Name=Editor WYSIWYG Module2000Desc=Permitir editar alguma área do texto usando um editor avançado (Baseado no CKEditor) Module2200Name=Preços dinâmicos Module2200Desc=Habilitar o uso de expressões matemáticas para os preços -Module2300Name=Cron Module2300Desc=Gestor de Tarefas Agendadas Module2400Name=Agenda/Eventos Module2400Desc=Siga eventos ou encontros. Registre manualmente os eventos nas Agendas ou deixe que o aplicativo grave automaticamente os eventos para fins de monitoramento. @@ -510,34 +434,25 @@ Module2500Name=Gerenciamento de Conteúdo Eletrônico Module2500Desc=Salve e compartilhe documentos Module2600Name=Serviços API/Web (Servidor SOAP) Module2600Desc=Ativa o servidor de serviços web do Dolibarr -Module2610Name=Serviços API/Web (servidor REST) Module2610Desc=Permitir que o servidor prestação de serviços de API REST do Dolibarr Module2660Name=Chamar ServiçosWeb (cliente SOAP) Module2660Desc=Habilitar o webservices do Dolibarr (pode ser usado para empurrar de dados / pedidos de servidores externos. Ordens Fornecedor suporte apenas para o momento) -Module2700Name=Gravatar Module2700Desc=Usar serviço online do Gravatar (www.gravatar.com) para mostrar foto de usuários/membros (achado pelos emails deles). Precisa de acesso a internet -Module2800Desc=Cliente FTP -Module2900Name=GeoIPMaxmind Module2900Desc=Capacidade de conversão com o GeoIP Maxmind -Module3100Name=Skype Module3100Desc=Adicionar um botão Skype nos cartões dos usuários / terceiros / contatos membros Module4000Name=RH Module4000Desc=Gestão de recursos humanos Module5000Name=Multi-Empresas Module5000Desc=Permite gerenciar várias empresas -Module6000Name=Fluxo de Trabalho Module6000Desc=Gestor de Fluxo de Trabalho -Module10000Name=Websites Module10000Desc=Criar websites públicos com um editor WYSIWYG. Configure apenas o seu servidor web para direcionar para um diretório dedicado para tê-lo online na Internet. Module20000Name=Gerenciamento de folgas e férias Module20000Desc=Autorizar e acompanhar solicitações de licença de funcionários Module39000Name=Lote do produto Module39000Desc=Lote ou número de serie, para compra e venda administrado produtos -Module50000Name=PayBox Module50000Desc=Módulo para oferecer pagamento online via cartão de crédito com PayBox Module50100Name=Ponto de Vendas Module50100Desc=Módulo ponto de vendas (PDV) -Module50200Name=Paypal Module50200Desc=Módulo que oferece pagamento online via cartão de crédito com Paypal Module50400Name=Contabilidade (avançada) Module50400Desc=Gestão de Contabilidade (partes duplas) @@ -545,9 +460,7 @@ Module54000Name=ImprimirIPP Module54000Desc=Imprima via Cups IPP Module55000Name=Pesquisa Aberta Module55000Desc=Módulo que integra pesquisa (tipo: Doodle, Studs, Rdvz, ...) -Module59000Name=Margens Module59000Desc=Módulo para gerenciar margens -Module60000Name=Comissões Module60000Desc=Módulo para gerenciar comissão Module63000Name=Recursos Module63000Desc=Gerenciar recursos (impressoras, carros, salas, etc.) que você pode compartilhar em eventos. @@ -559,30 +472,21 @@ Permission15=Enviar Faturas de Clientes por E-Mail Permission16=Criar Pagamentos para Faturas de Clientes Permission19=Deletar Faturas de Clientes Permission21=Ler Orçamentos -Permission22=Criar/Modificar Orçamentos Permission24=Validar Orçamentos -Permission25=Enviar os Orçamentos -Permission26=Fechar Orçamentos -Permission27=Eliminar Orçamentos Permission28=Exportar Orçamentos Permission31=Ler Produtos Permission32=Criar/Modificar Produtos Permission34=Deletar Produtos Permission36=Ver/Gerenciar Produtos Ocultos -Permission38=Exportar Produtos Permission41=Ler Projetos (Projetos Compartilhados e Projetos que eu contratei para) Permission42=Criar/Modificar Projetos (Projetos Compartilhados e Projetos que eu contratei para) Permission44=Deletar Projetos (Projetos Compartilhados e Projetos que eu contratei para) Permission45=Exportar projetos Permission61=Ler Intervenções -Permission62=Criar/Modificar Intervenções Permission64=Deletar Intervenções -Permission67=Exportar Intervenções Permission71=Ler Membros -Permission72=Criar/Modificar Membros Permission74=Deletar Membros Permission75=Configurar tipos e atributos dos Membros -Permission76=Exportar dados Permission78=Ler Assinaturas Permission79=Criar/Modificar Assinaturas Permission81=Ler Pedidos de Clientes @@ -642,8 +546,6 @@ Permission185=Realizar Pedidos para Fornecedores Permission186=Aceitar Pedidos para Fornecedores Permission187=Fechar Pedidos para Fornecedores Permission188=Cancelar Pedidos para Fornecedores -Permission192=Criar Linhas -Permission193=Cancelar Linhas Permission194=Ler as Linhas de Bandwith Permission202=Criar Conexões ADSL Permission203=Pedir Pedidos de Conexões @@ -653,7 +555,6 @@ Permission206=Ler Conexões Permission211=Ler Telefones Permission212=Linhas de Pedidos Permission213=Ativar Linha -Permission214=Configurar Telefone Permission215=Configurar Provedores Permission221=Ler E-Mails Permission222=Criar/Modificar E-Mails (assunto, destinatários...) @@ -675,7 +576,6 @@ Permission254=Criar/Modificar Usuários Externos Permission255=Modificar Senha de Outros Usuários Permission256=Deletar ou Desativar Outros Usuários Permission262=Acesso Extendido para Todos os Terceiros (não apenas aqueles usuários vinculados). Não é efetivo para usuários externos (sempre são limitados a eles mesmos) -Permission271=Ler CA Permission272=Ler Faturas Permission273=Emitir Fatura Permission281=Ler Contatos @@ -729,7 +629,7 @@ Permission773=Excluir relatórios de despesas Permission774=Leia todos os relatórios de despesas (mesmo para o utilizadores Não subordinados) Permission775=Aprovar os relatórios de despesas Permission776=Relatórios de despesas pagas -Permission779=Exportar - Relatórios de despesas +Permission779=Exportar - Relatórios de despesas Permission1001=Ler Estoques Permission1002=Criar/Modificar Estoques Permission1003=Excluir Estoques @@ -787,7 +687,6 @@ Permission2802=Usar cliente FTP no modo escrita (deletar ou upload de arquivos) Permission50101=Usar Ponto de Vendas Permission50201=Ler Transações Permission50202=Importar Transações -Permission54001=Imprimir Permission55001=Ler Pesquisa Permission55002=Criar/Modificar Pesquisa Permission59001=Leia margens comerciais @@ -801,9 +700,6 @@ DictionaryCompanyType=Tipos de terceiros DictionaryCompanyJuridicalType=Formas legais dos terceiros DictionaryProspectLevel=Nível potencial Prospect DictionaryCanton=Estado/Província -DictionaryRegion=Regiões -DictionaryCountry=Países -DictionaryCurrency=Moedas DictionaryCivility=Títulos pessoais e profissionais DictionaryActions=Tipos de eventos na agenda DictionarySocialContributions=Tipos de encargos sociais e fiscais @@ -817,52 +713,40 @@ DictionaryPaperFormat=Formatos de papel DictionaryFees=Tipos de benefício DictionarySendingMethods=Métodos do transporte DictionaryStaff=Pessoal -DictionaryAvailability=Atraso na entrega DictionaryOrderMethods=Métodos de compra DictionarySource=Origem das propostas / ordens DictionaryAccountancyCategory=Categorias da contabilidade DictionaryAccountancysystem=Modelos para o plano de contas DictionaryEMailTemplates=Modelos de E-mails -DictionaryUnits=Unidades DictionaryProspectStatus=Status de Prospecção DictionaryHolidayTypes=Tipos de licenças DictionaryOpportunityStatus=Status oportunidade para projeto / lead SetupSaved=Configurações Salvas -BackToModuleList=Voltar à lista de módulos BackToDictionaryList=Voltar para a lista de dicionários VATManagement=Gestor de ICMS VATIsUsedDesc=Como padrão, quando da criação de orçamentos, faturas, pedidos, etc. a taxa do ICMS acompanha a regra padrão ativa:<br>se o vendedor não estiver sujeito ao ICMS, então o padrão do ICMS é 0. Fim da regra.<br>Se o (país da venda= país da compra), então o ICMS por padrão é igual ao ICMS do produto no país da venda. Fim da regra. <br>Se o vendedor e o comprador estão na Comunidade Europeia e os produtos são meios de transporte (carro, navio, avião), o VAT padrão é 0 (O VAT deverá ser pago pelo comprador à receita federal do seu país e não ao vendedor). Fim da regra.<br>Se o vendedor e o comprador estão na Comunidade Europeia e o comprador não é uma pessoa jurídica, então o VAT por padrão é o VAT do produto vendido. Fim da regra.<br>Se o vendedor e o comprador estão na Comunidade Europeia e o comprador é uma pessoa jurídica, então o VAT é 0 por padrão . Fim da regra.<br>Em qualquer outro caso o padrão proposto é ICMS=0. Fim da regra. VATIsNotUsedDesc=Por padrão o ICMS sugerido é 0, o que pode ser usado em casos tipo associações, pessoas ou pequenas empresas. VATIsUsedExampleFR=Na França, as empresas ou organizações tem um sistema fiscal real (simplificado real ou normal real). Um sistema no qual o ICMS(vat) é declarado. VATIsNotUsedExampleFR=Na França, as associações que não declaram ICMS(vat) ou empresas, organizações ou profissionais liberais que tem escolhidos o sistema fiscal de micro empresas (VAT em franquia) e pago uma franquia VAT sem qualquer declaração de ICMS(vat). Está escolha será mostrado com uma refêrencia "Não Aplicado ICMS(vat) - art-293B de CGI" nas faturas. -##### Local Taxes ##### LTRate=Rata LocalTax1IsNotUsed=Não utilizar segundo imposto LocalTax1IsUsedDesc=Utilizar um segundo tipo de imposto (outro que não seja ICMS) LocalTax1IsNotUsedDesc=Não utilizar outro tipo de imposto (outro que não seja ICMS) -LocalTax1Management=Segundo tipo de imposto -LocalTax1IsUsedExample= -LocalTax1IsNotUsedExample= LocalTax2IsNotUsed=Não utilizar terceiro imposto LocalTax2IsUsedDesc=Utilizar um terceiro tipo de imposto (outro que não seja ICMS) LocalTax2IsNotUsedDesc=Não utilizar outro tipo de imposto (outro que não seja ICMS) -LocalTax2Management=Terceiro tipo de imposto -LocalTax2IsUsedExample= -LocalTax2IsNotUsedExample= -LocalTax1ManagementES= Gestor RE -LocalTax1IsUsedDescES= A taxa RE padrão, quando criando orçamentos, faturas, pedidos, etc., segue a regra padrão ativa:<br>Se o comprador não estiver sujeito à RE, a RE por padrão=0. Fim da regra.<br>Se o comprador for sujeito à RE, então será aplicada a RE padrão. Fim da regra.<br> -LocalTax1IsNotUsedDescES= A RE padrão proposta é 0. Fim da regra. -LocalTax1IsUsedExampleES= Na Espanha eles são profissionais sujeito a alguma seção especifica da IAE espanhola. -LocalTax1IsNotUsedExampleES= Na Espanha eles são proficionais e sócios e sujeito a uma certa seção da IAE espanhola. -LocalTax2ManagementES= Gestor IRPF -LocalTax2IsUsedDescES= A taxa RE padrão, quando criando orçamentos, faturas, pedidos, etc., acompanha a regra padrão ativa:<br>Se o vendedor não estiver sujeito ao IRPF, então o IRPF por padrão=0. Fim da regra.<br>Se o vendedor estiver sujeito ao IRPF, então aplica-se o IRPF padrão. Fim da regra.<br> -LocalTax2IsNotUsedDescES= Por padrão, o iRPF sugerido é 0. Fim da regra. -LocalTax2IsUsedExampleES= Na Espanha, freelancers e profissionais independentes que oferecem serviços e empresas que tenham escolhidos o módulo de sistema de imposto. -LocalTax2IsNotUsedExampleES= Na Espanha eles são negócios não sujeito ao módulo de sistema de imposto. +LocalTax1ManagementES=Gestor RE +LocalTax1IsUsedDescES=A taxa RE padrão, quando criando orçamentos, faturas, pedidos, etc., segue a regra padrão ativa:<br>Se o comprador não estiver sujeito à RE, a RE por padrão=0. Fim da regra.<br>Se o comprador for sujeito à RE, então será aplicada a RE padrão. Fim da regra.<br> +LocalTax1IsNotUsedDescES=A RE padrão proposta é 0. Fim da regra. +LocalTax1IsUsedExampleES=Na Espanha eles são profissionais sujeito a alguma seção especifica da IAE espanhola. +LocalTax1IsNotUsedExampleES=Na Espanha eles são proficionais e sócios e sujeito a uma certa seção da IAE espanhola. +LocalTax2ManagementES=Gestor IRPF +LocalTax2IsUsedDescES=A taxa RE padrão, quando criando orçamentos, faturas, pedidos, etc., acompanha a regra padrão ativa:<br>Se o vendedor não estiver sujeito ao IRPF, então o IRPF por padrão=0. Fim da regra.<br>Se o vendedor estiver sujeito ao IRPF, então aplica-se o IRPF padrão. Fim da regra.<br> +LocalTax2IsNotUsedDescES=Por padrão, o iRPF sugerido é 0. Fim da regra. +LocalTax2IsUsedExampleES=Na Espanha, freelancers e profissionais independentes que oferecem serviços e empresas que tenham escolhidos o módulo de sistema de imposto. +LocalTax2IsNotUsedExampleES=Na Espanha eles são negócios não sujeito ao módulo de sistema de imposto. CalcLocaltax=Relatórios sobre os impostos locais -CalcLocaltax1=Vendas - Compras CalcLocaltax1Desc=Relatorios de taxas locais são calculados pela differença entre taxas locais de venda e taxas locais de compra -CalcLocaltax2=Compras CalcLocaltax2Desc=Relatorio de taxas locais e o total de taxas locais nas compras CalcLocaltax3=De vendas CalcLocaltax3Desc=Relatorio de taxas locais e o total de taxas locais de vendas @@ -876,14 +760,9 @@ AlwaysActive=Sempre ativo Upgrade=Atualizar MenuUpgrade=Atualizar / Ampliar AddExtensionThemeModuleOrOther=Adicionar extensão (tema, módulo, ...) -WebServer=Servidor web DocumentRootServer=Diretório raiz do servidor web DataRootServer=Diretório raiz dos dados -IP=IP -Port=Porta VirtualServerName=Nome virtual do servidor -OS=SO -PhpWebLink=link Web-PHP Browser=Navegador Server=Servidor Database=Banco de Dados @@ -892,15 +771,13 @@ DatabaseName=Nome do Banco de Dados DatabasePort=Porta do Banco de Dados DatabaseUser=Usuário do Banco de Dados DatabasePassword=Senha do Banco de Dados -Tables=Tabelas TableName=Nome da Tabela NbOfRecord=Núm de gravações -Host=Servidor DriverType=Tipo de Driver SummarySystem=Resumo de informações do sistema SummaryConst=Lista de todos os parâmetros de configurações do Dolibarr MenuCompanySetup=Empresa -DefaultMenuManager= Gestor padrão de menu +DefaultMenuManager=Gestor padrão de menu DefaultMenuSmartphoneManager=Gestor do menu de smartphone Skin=Tema Visual DefaultSkin=Tema visual default @@ -919,16 +796,10 @@ CompanyName=Nome CompanyAddress=Endereço CompanyZip=CEP CompanyTown=Município -CompanyCountry=País -CompanyCurrency=Moeda principal -CompanyObject=Objeto da empresa -Logo=Logo -DoNotSuggestPaymentMode=Não sugerir NoActiveBankAccountDefined=Nenhuma conta bancária ativa está definida OwnerOfBankAccount=Titular da conta bancária %s BankModuleNotActive=O módulo de contas bancárias não está habilitado ShowBugTrackLink=Mostrar link "<strong>%s</strong>" -Alerts=Alertas DelaysOfToleranceBeforeWarning=Prazos de tolerância antes do aviso DelaysOfToleranceDesc=Esta janela permite definir os prazos de tolerância antes que o aviso é reportado na tela com o símbolo %s, sobre cada elemento em atraso. Delays_MAIN_DELAY_ACTIONS_TODO=Prazo de tolerância (em dias) antes do alerta sobre eventos planejados (eventos da agenda) ainda não concluídos @@ -952,7 +823,6 @@ SetupDescription3=Os parâmetros no menu <a href="%s">Configuração -> Companhi SetupDescription4=Os parâmetros no menu <a href="%s">Configuração -> Módulos</a> são exigidos, pois o Dolibarr não é um ERP/CRM monolítico, mas uma coleção de diversos módulos, todos mais ou menos independentes. Novas funções serão adicionadas aos menus para cada módulo que você habilitar. SetupDescription5=Outros menu precisa entrar com parâmetros opcionais do gestor. LogEvents=Auditoría de segurança dos eventos -Audit=Auditoría InfoDolibarr=Sobre o Dolibarr InfoBrowser=Sobre o navegador InfoOS=Sobre o SO @@ -1006,9 +876,8 @@ RestoreDesc=Para restaurar o backup Dolibarr, você deve: RestoreDesc2=* Restaurar o arquivo de backup (zipado) no diretório dos documentos, para extrair a arvore de arquivos no diretório do documento da nova instalação do Dolibarr ou dentro do atual diretório dos documentos (<b>%s</b>). RestoreDesc3=* Restaurar os dados de backup do arquivo de despejo, para dentro do banco de dados da nova instalação do Dolibarr ou para dentro da atual instalação. Aviso, uma vez a restauração completa, você deve usar o login/senha, que existia quando o backup foi feito, para conectar denovo. Para restaurar o backup do banco de dados para dentro da atual instalação, você pode seguir esse assistente. RestoreMySQL=Importar MySQL -ForcedToByAModule= Essa Regra é forçada para <b>%s</b> by um módulo ativado +ForcedToByAModule=Essa Regra é forçada para <b>%s</b> by um módulo ativado PreviousDumpFiles=Disponível banco de dados de backup dos arquivos de despejo -WeekStartOnDay=Primeiro dia da semana RunningUpdateProcessMayBeRequired=Rodando o processo de upgrade parece ser requerido (Versão dos programas %s é diferente da versão do banco de dados %s) YouMustRunCommandFromCommandLineAfterLoginToUser=Você deve rodar esse comando na linha de comando (CLI) depois de logar no shell com o usuário <b>%s</b> ou você deve adicionar a opção -W no final da linha de comando para fornecer a senha <b>%s</b>. YourPHPDoesNotHaveSSLSupport=Função SSL functions não está disponível no seu PHP @@ -1021,26 +890,18 @@ SomeTranslationAreUncomplete=Algumas línguas pode ter sido parcialmente traduzi MAIN_DISABLE_METEO=Desativar visualização meteo TestLoginToAPI=Teste de login para API ProxyDesc=Algumas funções do Dolibarr precisam ter acesso a internet para funcionar. Defina esses parâmetros aqui. se o servidor Dolibarr esta atrás de um servidor de proxy, esses parâmetros falam pro Dolibarr como acessar a internet através disso. -ExternalAccess=Acesso externo MAIN_PROXY_USE=Use um servidor de proxy (caso contrário acesso direto a internet) MAIN_PROXY_HOST=Nome/Endereço do servidor de proxy MAIN_PROXY_PORT=Porta do servidor de proxy MAIN_PROXY_USER=Login para usar no servidor de proxy MAIN_PROXY_PASS=Senha para usar no servidor de proxy DefineHereComplementaryAttributes=Defina aqui todos os atributos, não disponível por default, e que você quer que seja suportado por %s. -ExtraFields=Atributos complementares -ExtraFieldsLines=Atributos complementares (linhas) ExtraFieldsSupplierOrdersLines=Atributos complementares (linhas de encomenda) ExtraFieldsSupplierInvoicesLines=Atributos complementares (linhas da fatura) ExtraFieldsThirdParties=Atributos complementares (terceiros) ExtraFieldsContacts=Atributos complementares (contato/endereço) ExtraFieldsMember=Atributos complementares (membros) -ExtraFieldsMemberType=Atributos complementares (tipo de membro) -ExtraFieldsCustomerInvoices=Atributos complementares (faturas) ExtraFieldsSupplierOrders=Atributos complementares (pedidos) -ExtraFieldsSupplierInvoices=Atributos complementares (faturas) -ExtraFieldsProject=Atributos complementares (projetos) -ExtraFieldsProjectTask=Atributos complementares (tarefas) ExtraFieldHasWrongValue=Atributo %s tem um valor errado. AlphaNumOnlyLowerCharsAndNoSpace=apenas alfanumérico e minúsculas, sem espaço SendmailOptionNotComplete=Aviso, em alguns sistemas Linux, para enviar email para seu email, sendmail executa a configuração que deve conter opção -ba (parâmetro mail.force_extra_parameters dentro do seu arquivo php.ini). Se algum destinatário não receber emails, tente editar esse parâmetro PHP com mail.force_extra_parameters = -ba). @@ -1076,23 +937,17 @@ XDebugInstalled=XDebug é carregado. XCacheInstalled=XCache é carregado. AddRefInList=Aparência cliente/fornecedor ref dentro da lista (escolha a lista ou combobox) e mais o hyperlink. Terceiros serão exibidos co o nome "CC12345 - SC45678 - A grande corporação", ao invés de "A grande corporação". AskForPreferredShippingMethod=Perguntar pelo Método de Envio preferido para Terceiros -FieldEdition=Edição do campo %s FillThisOnlyIfRequired=Exemplo: +2 (Preencha somente se compensar o problema do timezone é experiente) -GetBarCode=Obter código de barras -##### Module password generation PasswordGenerationStandard=Retorna uma senha gerara de acordo com o algorítimo interno do Dolibarr: 8 caracteres contendo números e letras em letras minusculas. PasswordGenerationNone=Não sugerimos qualquer senha gerada. A senha deve ser inserida manualmente. PasswordGenerationPerso=Retornar uma senha de acordo com a configuração definida para a sua personalidade. SetupPerso=De acordo com a sua configuração PasswordPatternDesc=Descrição do padrão de senha -##### Users setup ##### RuleForGeneratedPasswords=Regra para sugerir uma senha gerada ou validação de senha DisableForgetPasswordLinkOnLogonPage=Não mostrar o link "Esqueceu a senha" na página de login UsersSetup=Configurações de módulo de usuários UserMailRequired=EMail é necessário para criação de um novo usuário -##### HRM setup ##### HRMSetup=Configuração do módulo RH -##### Company setup ##### CompanySetup=Configurações de módulo das empresas CompanyCodeChecker=Módulo de geração e verificação de códigos de terceiros (cliente ou fornecedor) AccountCodeManager=Módulo de geração de códigos de contabilidade (clientes ou fornecedores) @@ -1108,14 +963,10 @@ CompanyIdProfChecker=Regras no Ids profissional MustBeUnique=Deve ser único? MustBeMandatory=Obrigatória a criação de terceiros? MustBeInvoiceMandatory=Obrigatória a validação de faturas? -##### Webcal setup ##### WebCalUrlForVCalExport=Uma exportação de link para o formato <b>%s</b> está disponível no seguinte link: %s -##### Invoices ##### BillsSetup=Configurações do módulo de faturas BillsNumberingModule=Faturas e notas de crédito no modelo de numeração BillsPDFModules=Modelos de documentos da fatura -CreditNote=Nota de crédito -CreditNotes=Notas de crédito ForceInvoiceDate=Forçar data de fatura para data de validação SuggestedPaymentModesIfNotDefinedInInvoice=Sugerir formas de pagamentos na fatura por default se não estiver definida na fatura SuggestPaymentByRIBOnAccount=Sugerir pagamento por transferência bancária @@ -1125,14 +976,12 @@ WatermarkOnDraftInvoices=Marca d'água sobre o projeto de faturas (nenhum se est PaymentsNumberingModule=Modelo de enumeração para pagamentos SuppliersPayment=Pagamentos a fornecedores SupplierPaymentSetup=Configuração dos pagamentos aos fornecedores -##### Proposals ##### PropalSetup=Configurações do módulo de orçamentos ProposalsNumberingModules=Modelos de numeração de orçamentos ProposalsPDFModules=Modelos de documentos para Orçamentos FreeLegalTextOnProposal=Texto livre em orçamentos WatermarkOnDraftProposal=Marca d'água no rascunho de orçamentos (nenhum se vazio) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Informar conta bancária de destino da proposta -##### SupplierProposal ##### SupplierProposalSetup=Preço solicitado via fornecedor instalação de módulo SupplierProposalNumberingModules=Modelos de numeração das solicitações de preço aos fornecedores SupplierProposalPDFModules=Modelos de documentos de solicitação de preço aos fornecedores @@ -1140,57 +989,41 @@ FreeLegalTextOnSupplierProposal=Texto livre sobre os pedidos de preços de forne WatermarkOnDraftSupplierProposal=Marca d'água em projetos de ordem dos fornecedores (nenhum se estiver vazio) BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Informar conta bancária de destino da proposta WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Solicitar Fonte de Armazenagem para o pedido -##### Orders ##### OrdersSetup=Configurações do gestor de pedidos OrdersNumberingModules=modelos de numeração de pedidos OrdersModelModule=Modelos de documentos de pedidos -FreeLegalTextOnOrders=Texto livre em pedidos WatermarkOnDraftOrders=Marca d'água no rascunho de pedidos (nenhum para vazio) ShippableOrderIconInList=Adicionar um ícone na lista de pedidos que indicam se a ordem é shippable BANK_ASK_PAYMENT_BANK_DURING_ORDER=Informar conta bancária de destino da ordem -##### Clicktodial ##### ClickToDialSetup=Configurações do módulo clique para discar ClickToDialUrlDesc=Chamada URL quando se dá um clique na imagem do telefone. Na URL, você pode usar as tags<br><b>__TELEFONEPARA__</b> que será substituido com o número telefônico da pessoa a telefonar<br><b>__TELEFONEDE__ que será substituido com o número da pessoa que se telefona (seus)<br><b>__LOGIN__</b> que será substituido com o seu usuário do seu clique para discar (definido com o seu cartão de usuário)<br><b>__SENHA__</b> que será substituido pela sua senha do clique para discar (definida pelo seu cartão de usuário) -##### Bookmark4u ##### -##### Interventions ##### InterventionsSetup=Configurações do módulo intervenções FreeLegalTextOnInterventions=Texto livre nos documentos de intervenção FicheinterNumberingModules=Modelos de numeração de intervenção TemplatePDFInterventions=Modelos de documentos de cartão de intervenção WatermarkOnDraftInterventionCards=Marca d'água nos documentos de cartão de intervenção (nenhum para vazio) -##### Contracts ##### ContractsSetup=Configurações de módulo de contratos ContractsNumberingModules=módulos de numeração de contratos TemplatePDFContracts=Modelos de documentos Contratos FreeLegalTextOnContracts=Texto livre em contratos WatermarkOnDraftContractCards=Marca d'água em projetos de contratos (nenhum se estiver vazio) -##### Members ##### MembersSetup=Configurações de módulo de membros -MemberMainOptions=Opções principais -AdherentLoginRequired= Gestor de login para cada membro +AdherentLoginRequired=Gestor de login para cada membro AdherentMailRequired=E-Mail é obrigatório para criar um novo membro MemberSendInformationByMailByDefault=Marque o checkbox para enviar confirmação de correspondência para membros (validação ou nova contribuição) é ativo por default -##### LDAP setup ##### LDAPSetup=Configurações do LDAP LDAPGlobalParameters=Parâmetros globais LDAPUsersSynchro=Usuários -LDAPGroupsSynchro=Grupos LDAPContactsSynchro=Contatos -LDAPMembersSynchro=Membros LDAPSynchronization=sincronização LDAP LDAPFunctionsNotAvailableOnPHP=Funções LDAP não estão disponíveis no seu PHP -LDAPToDolibarr=LDAP -> Dolibarr -DolibarrToLDAP=Dolibarr -> LDAP -LDAPNamingAttribute=Chave em LDAP LDAPSynchronizeUsers=Organização dos usuários em LDAP LDAPSynchronizeGroups=Organização dos grupos em LDAP LDAPSynchronizeContacts=Organização dos contatos em LDAP LDAPSynchronizeMembers=Organização dos membros da fundação em LDAP LDAPPrimaryServer=Servidor primário LDAPSecondaryServer=Servidor secundário -LDAPServerPort=Porta do servidor LDAPServerPortExample=Porta default : 389 -LDAPServerProtocolVersion=Versão de protocolo LDAPServerUseTLS=Usuário TLS LDAPServerUseTLSExample=Seu servidor LDAP usa TLS LDAPServerDn=Servidor DN @@ -1199,7 +1032,6 @@ LDAPAdminDnExample=Preencher DN (ex: cn=admin,dc=exemplo,dc=com ou cn=Administra LDAPPassword=Senha do administrador LDAPUserDn=DN dos Usuário LDAPUserDnExample=DN completo (ex: ou=usuários,dc=exemplo,dc=com) -LDAPGroupDn=DN dos grupos LDAPGroupDnExample=DN completo (ex: ou=grupos,dc=exemplo,dc=com) LDAPServerExample=Endereço do servidor (ex: localhost, 192.168.0.2, ldaps://ldap.exemplo.com/) LDAPServerDnExample=DN completo (Ex: dc=exemplo,dc=com) @@ -1207,26 +1039,21 @@ LDAPDnSynchroActive=Sincronização de Usuários e Grupos LDAPDnSynchroActiveExample=Sincronização LDAP para Dolibarr ou Dolibarr para LDAP LDAPDnContactActive=Sincronização dos contatos LDAPDnContactActiveExample=Sincronização Ativada/Desativada -LDAPDnMemberActive=Sincronização dos Membros LDAPDnMemberActiveExample=Sincronização Ativada/Desativada LDAPContactDn=Contatos DN do Dolibarr LDAPContactDnExample=DN completo (ex: ou=contatos,dc=exemplo,dc=com) LDAPMemberDn=Membros DN do Dolibarr LDAPMemberDnExample=DN completo (ex: ou=membros,dc=exemplo,dc=com) -LDAPMemberObjectClassList=Lista de objectClass LDAPMemberObjectClassListExample=Lista de ObjectClass que definem os atributos gravados (ex: top,inetOrgPerson ou top,usuário por active diretory) -LDAPUserObjectClassList=Lista de objectClass LDAPUserObjectClassListExample=Lista de ObjectClass que definem os atributos gravados (ex: top,inetOrgPerson ou top,usuário por active diretory) -LDAPGroupObjectClassList=Lista de objectClass LDAPGroupObjectClassListExample=Lista de ObjectClass que definem os atributos gravados (ex top,grupoDeNomeUnico) -LDAPContactObjectClassList=Lista de objectClass LDAPContactObjectClassListExample=Lista de objectClass que definem os atributos gravados (ex: top,inetOrgPerson o top,usuários por active diretory) LDAPTestConnect=Teste de conexão LDAP LDAPTestSynchroContact=Teste de sincronização dos contatos LDAPTestSynchroUser=Teste de sincronização dos Usuário LDAPTestSynchroGroup=Teste de sincronização dos grupos LDAPTestSynchroMember=Teste de sincronização dos Membros -LDAPTestSearch= Teste de pesquisa LDAP +LDAPTestSearch=Teste de pesquisa LDAP LDAPSynchroOK=Teste de sincronização foi um sucesso LDAPSynchroKO=Teste de sincronização falhou LDAPSynchroKOMayBePermissions=Teste de sincronização falhou. Verifique se a conexão do servidor está corretamente configurada e que permita atualizações LDAP @@ -1238,49 +1065,28 @@ LDAPSetupForVersion3=Servidor LDAP configurado para versão 3 LDAPSetupForVersion2=Servidor LDAP configurado para versão 2 LDAPDolibarrMapping=Mapeamento Dolibarr LDAPLdapMapping=Mapeamento LDAP -LDAPFieldLoginUnix=Login (unix) -LDAPFieldLoginExample=Exemplo : uid -LDAPFilterConnection=Filtro de pesquisa LDAPFilterConnectionExample=Exemplo : &(objectClass=inetOrgPerson) -LDAPFieldLoginSamba=Login (samba, activedirectory) LDAPFieldLoginSambaExample=Exemplo : ananomedaconta -LDAPFieldFullname=Nome completo -LDAPFieldFullnameExample=Exemplo : cn LDAPFieldPasswordNotCrypted=Senha não criptografada LDAPFieldPasswordCrypted=Senha criptografada LDAPFieldPasswordExample=Exemplo : SenhaUsuário -LDAPFieldCommonNameExample=Exemplo : cn -LDAPFieldName=Nome -LDAPFieldNameExample=Exemplo : sn LDAPFieldFirstName=Primeiro nome LDAPFieldFirstNameExample=Exemplo : deumnome -LDAPFieldMail=E-Mail -LDAPFieldMailExample=Exemplo : mail LDAPFieldPhone=Telefone profissional LDAPFieldPhoneExample=Exemplo : númerotelefônico -LDAPFieldHomePhone=Telefone pessoal LDAPFieldHomePhoneExample=Exemplo : númerodecasa LDAPFieldMobile=Celular LDAPFieldMobileExample=Exemplo : móvel -LDAPFieldFax=Fax LDAPFieldFaxExample=Exemplo : númerodefax LDAPFieldAddress=Endereço LDAPFieldAddressExample=Exemplo : Rua LDAPFieldZip=CEP LDAPFieldZipExample=Exemplo : 00000-000 LDAPFieldTown=Município -LDAPFieldTownExample=Exemplo : l -LDAPFieldCountry=País -LDAPFieldDescription=Descrição LDAPFieldDescriptionExample=Exemplo : Descrição -LDAPFieldNotePublic=Nota Pública LDAPFieldNotePublicExample=Exemplo: publicnote -LDAPFieldGroupMembers= Membros de grupo -LDAPFieldGroupMembersExample= Exemplo : membroÚnico -LDAPFieldBirthdate=Data de nascimento -LDAPFieldCompany=Empresa -LDAPFieldCompanyExample=Exemplo : o -LDAPFieldSid=SID +LDAPFieldGroupMembers=Membros de grupo +LDAPFieldGroupMembersExample=Exemplo : membroÚnico LDAPFieldSidExample=Exemplo : objetosid LDAPFieldEndLastSubscription=Data do término de inscrição LDAPFieldTitle=Cargo @@ -1302,16 +1108,12 @@ MemcachedModuleAvailableButNotSetup=Módulo de aceleração da memória cache es MemcachedAvailableAndSetup=Módulo de aceleração da memória cache está ativado e a configuração está completa OPCodeCache=cache OPCode NoOPCodeCacheFound=Nenhum cache OPCode foi achado. Pode ser que você use outro cache OPCode do que XCache ou eAccelerator (bom), pode ser que você não tenha cache OPCode (muito mau). -HTTPCacheStaticResources=Cache HTTP para recursos estáticos (css, img, javascript) FilesOfTypeCached=Arquivos do tipo %s estão no cache pelo servidor HTTP FilesOfTypeNotCached=Arquivos do tipo %s não estão no cache pelo servidor HTTP FilesOfTypeCompressed=Arquivos do tipo %s estão comprimidos pelo servidor HTTP FilesOfTypeNotCompressed=Arquivos do tipo %s não estão comprimidos pelo servidor HTTP -CacheByServer=Cache pelo servidor -CacheByClient=Cache pelo navegador CompressionOfResources=Comprimir as respostas HTTP TestNotPossibleWithCurrentBrowsers=Não é possível detecção automática -##### Products ##### ProductSetup=Configurações do módulo dos produtos ServiceSetup=Configurações do módulo de serviços ProductServiceSetup=Configurações dos módulos de produtos e serviços @@ -1324,22 +1126,18 @@ UseSearchToSelectProduct=Usar um formulário de pesquisa para escolher um produt SetDefaultBarcodeTypeProducts=Tipo de código de barras default para usar nós produtos SetDefaultBarcodeTypeThirdParties=Tipo de código de barras default para usar nós terceiros UseUnits=Definir uma unidade de medida para a Quantidade durante a edição das linhas do pedido, proposta ou fatura -ProductCodeChecker= Módulo para geração de código do produto e verificação (produto ou serviço) -ProductOtherConf= Configurações de Produto / Serviço +ProductCodeChecker=Módulo para geração de código do produto e verificação (produto ou serviço) +ProductOtherConf=Configurações de Produto / Serviço IsNotADir=não é um diretório! -##### Syslog ##### SyslogSetup=Configurações do módulo de logs SyslogOutput=Saídas de logs -SyslogFacility=Facilidade SyslogLevel=Nível SyslogFilename=Nome do arquivo e caminho YouCanUseDOL_DATA_ROOT=Você pode usar DOL_DATA_ROOT/dolibarr.log para um arquivo de log no diretório dos "documentos" do Dolibarr. ErrorUnknownSyslogConstant=A Constante %s não é conhecida pelas constantes do Syslog OnlyWindowsLOG_USER=Somente Windows suporta LOG_USER -##### Donations ##### DonationsSetup=Configurações do módulo de doações DonationsReceiptModel=Templates de recibos de doação -##### Barcode ##### BarcodeSetup=Configurações de código de barras PaperFormatModule=Módulo de formato de impressão BarcodeEncodeModule=Tipo de codificação do código de barras @@ -1352,66 +1150,51 @@ BarcodeDescUPC=Código de barras tipo UPC BarcodeDescISBN=Código de barras tipo ISBN BarcodeDescC39=Código de barras tipo C39 BarcodeDescC128=Código de barras tipo C128 -BarcodeDescDATAMATRIX=Código de barras do tipo Datamatrix BarcodeDescQRCODE=Código de barras do tipo QR code GenbarcodeLocation=Ferramenta em linha de comando para geração de código de barras (usado pelo mecanismo interno para alguns tipos de código de barras) BarcodeInternalEngine=Mecanismo interno BarCodeNumberManager=Gerente de auto definir números de código de barras -##### Prelevements ##### WithdrawalsSetup=Configuração do módulo de pedidos com pagamento por Débito direto -##### ExternalRSS ##### ExternalRSSSetup=Configurações importantes de RSS externo NewRSS=Novo RSS Feed RSSUrl=URL de RSS RSSUrlExample=Um interessante RSS feed -##### Mailing ##### MailingSetup=Configurações do módulo de e-mails MailingEMailFrom=Emissor de e-mails (de) por envio de e-mail pelo módulo de e-mails MailingEMailError=Retornar e-mails (erros-para) por e-mails que contêm erros MailingDelay=Segundos de espera antes do envio da mensagem seguinte -##### Notification ##### NotificationSetup=Configurações do módulo de notificações por e-mail NotificationEMailFrom=Emissor de e-mails (de) por envio de notificação por e-mails FixedEmailTarget=Alvo fixo e-mail -##### Sendings ##### SendingsSetup=Configurações do módulo de envios SendingsReceiptModel=Modelo de recibo do envio SendingsNumberingModules=Módulos de númeração de envios SendingsAbility=Suporte para folhas de envios, para entregas de cliente NoNeedForDeliveryReceipts=Na maioria dos casos, recibos de envios são usados em duas folhas pela entrega de clientes (lista de produtos a enviar) e folhas que é recebida e assinado pelo cliente. Então o recibo de entrega do produto é duplicado e é raramente ativado. FreeLegalTextOnShippings=Texto livre para envios -##### Deliveries ##### DeliveryOrderNumberingModules=Módulo de numeração de recibos de produtos entregues DeliveryOrderModel=Modelo de recibo de produtos entregues DeliveriesOrderAbility=Suporta recibos de entrega de produtos FreeLegalTextOnDeliveryReceipts=Texto livre em recibos de entregas -##### FCKeditor ##### AdvancedEditor=Editor avançado ActivateFCKeditor=Editor avançado ativo por: FCKeditorForCompany=Criação/edição do WYSIWIG nas descrições de elementos e nota (exceto produtos/serviços) FCKeditorForProduct=Criação/edição do WYSIWIG nas descrições de produtos/serviços e nota FCKeditorForProductDetails=Criação/edição do WYSIWIG nas linhas dos detalhes de produtos de todas entidades (orçamentos, pedidos, faturas, etc...). <font class="warning">Aviso: Usando essa opção nesse caso é extremamente NÃO recomendado, podendo causar problemas com caracteres especiais e no formato da página na construção do arquivo PDF.</font> -FCKeditorForMailing= Criação/edição do WYSIWIG nos E-Mails massivos (ferramentas->emailing) +FCKeditorForMailing=Criação/edição do WYSIWIG nos E-Mails massivos (ferramentas->emailing) FCKeditorForUserSignature=criação/edição do WYSIWIG nas assinaturas de usuários FCKeditorForMail=Criação/Edição WYSIWIG para todos os e-mails (exceto Ferramentas->eMailing) -##### OSCommerce 1 ##### OSCommerceErrorConnectOkButWrongDatabase=Conexão foi um sucesso mas o banco de dados não enxerga o banco de dados do OSCommerce (chave %s não achada na tabela %s). OSCommerceTestOk=Conexão ao servidor '%s' no banco de dados '%s' com o usuário '%s' foi um sucesso. OSCommerceTestKo1=Conexão ao servidor '%s' foi um sucesso mas o banco de dados '%s' não foi alcançado. OSCommerceTestKo2=Conexão ao servidor '%s' com o usuário '%s' falhou. -##### Stock ##### StockSetup=Configurações do módulo de estoque IfYouUsePointOfSaleCheckModule=Se você usar um módulo Ponto de Venda (POS módulo fornecido por padrão ou outro módulo externo), esta configuração pode ser ignorado pelo seu modulo ponto de Venda. A maioria modulo ponto de Vendas são projetados para criar imediatamente uma fatura e diminuir estoque por padrão tudo o que são opções aqui. Então, se você precisa ou não ter uma diminuição de ações quando registrar uma venda a partir do seu ponto de venda, verifique também a configuração do seu módulo POS. -##### Menu ##### MenuDeleted=Menu Deletado -Menus=Menus -TreeMenuPersonalized=Menus personalizados NotTopTreeMenuPersonalized=Menus personalizados não conectados à uma entrada do menu superior -NewMenu=Novo Menu Menu=Seleção de menus -MenuHandler=Gestor de menus MenuModule=Fonte do módulo -HideUnauthorizedMenu= Esconder menus não autorizados (cinza) +HideUnauthorizedMenu=Esconder menus não autorizados (cinza) DetailId=Menu ID DetailMenuHandler=Gestor de menu onde mostra novo menu DetailMenuModule=Nome do módulo se a entrada do menu vier de um módulo @@ -1421,15 +1204,12 @@ DetailUrl=URL onde o menu envia para você (URL absoluta ou link externo com htt DetailEnabled=Condição para mostra ou não entrar DetailRight=Condição para mostrar menus não autorizados em cinza DetailLangs=Nomes de arquivos lang para código de etiqueta da tradução -DetailUser=Interno / Externo / Todos -Target=Alvo DetailTarget=Alvos por links (_blank topo abre uma nova janela) DetailLevel=Nível (-1:menu superior, 0:menu do cabeçario, >0 menu e sub-menu) ModifMenu=Modificar menu DeleteMenu=Deletar entrada do menu ConfirmDeleteMenu=Você tem certeza que deseja excluir a entrada no menu <b>%s</b>? FailedToInitializeMenu=Falha na inicialização do menu -##### Tax ##### TaxSetup=Configurações do módulo taxas, contribuição social e dividendos OptionVatMode=Imposto ICMS OptionVATDefault=Base em Dinheiro @@ -1437,7 +1217,6 @@ OptionVATDebitOption=Base em Acréscimo OptionVatDefaultDesc=ICMS é um imposto:<br>- Nas entregas dos bens (Nós usamos a data da fatura)<br>- Nos pagamentos dos serviços OptionVatDebitOptionDesc=ICMS é um imposto:<br>- Nas entregas dos bens (Nós usamos a data da fatura)<br>- Na emissão da fatura do serviço SummaryOfVatExigibilityUsedByDefault=O tempo do ICMS exige por default as seguintes opções a serem escolhidas: -OnDelivery=Na entrega OnPayment=No pagamento OnInvoice=Na fatura SupposedToBePaymentDate=Data usada no pagamento @@ -1449,7 +1228,6 @@ YourCompanyDoesNotUseVAT=Sua empresa está definido para não usar ICMS (Home->C AccountancyCode=Código de contabilidade AccountancyCodeSell=Código de contas de vendas AccountancyCodeBuy=Código de contas de compras -##### Agenda ##### AgendaSetup=Configurações do módulo de eventos e agenda PasswordTogetVCalExport=Chave para autorizar exportação do link PastDelayVCalExport=Não exportar eventos antigos de @@ -1458,74 +1236,57 @@ AGENDA_USE_EVENT_TYPE_DEFAULT=Definido automaticamente esse valor padrão para o AGENDA_DEFAULT_FILTER_TYPE=Use automaticamente este tipo de evento no filtro de busca da agenda AGENDA_DEFAULT_FILTER_STATUS=Use automaticamente este estado no filtro das buscas da agenda AGENDA_DEFAULT_VIEW=Qual aba voçê quer abrir por padrão quando o menu Agenda e selecionado -##### ClickToDial ##### ClickToDialDesc=Esto modo permite tornar os números telefônicos em link. Um clique neste ícone fará com que o seu telefone ligue para o número exibido. Isto pode ser usado para ligar para um sistema de Call Center do Dolibarr, o qual poderá ligar para um número em um sistema SIP, por exemplo. ClickToDialUseTelLink=Use apenas o link "tel." para os números de telefone ClickToDialUseTelLinkDesc=Use este método se os seus usuários possuírem um softphone ou uma interface de programa instalada no mesmo computador do navegador, e usado para ligar quando você clica em um link no seu navegador que inicia com "tel.". Se você precisar de uma solução de um servidor completo (sem a necessidade de instalação de um programa local), você deve definir isto para "Não" e preencher o próximo campo. -##### Point Of Sales (CashDesk) ##### -CashDesk=Ponto de Vendas CashDeskSetup=Configurações do módulo do ponto de vendas CashDeskThirdPartyForSell=Terceiro genérico para usar nas vendas CashDeskBankAccountForSell=Conta default para usar nos pagamentos em dinheiro -CashDeskBankAccountForCheque= Conta default para usar nos pagamentos em cheque -CashDeskBankAccountForCB= Conta default para usar nos pagamentos em cartão de crédito +CashDeskBankAccountForCheque=Conta default para usar nos pagamentos em cheque +CashDeskBankAccountForCB=Conta default para usar nos pagamentos em cartão de crédito CashDeskDoNotDecreaseStock=Desativar diminuição de ações quando uma venda é feita a partir de ponto de venda (se "não", diminuição de ações é feito para cada vendem feito a partir de POS, o que for opção definida no módulo de estoque). CashDeskIdWareHouse=Depósito para usar nas vendas StockDecreaseForPointOfSaleDisabled=Diminuição do estoque pelo PDV desativado StockDecreaseForPointOfSaleDisabledbyBatch=Diminuir estoque no Ponto De Vendas não é compativel com o gerenciamento do lote CashDeskYouDidNotDisableStockDecease=Você não desabilitou a redução do estoque quando realizando uma venda a partir do Ponto de Venda. Por isso um armazém é exigido. -##### Bookmark ##### BookmarkSetup=Configurações do módulo de marcadores BookmarkDesc=Esse módulo permite você gerenciar marcadores. Você pode também adicionar atalhos para qualquer página do Dolibarr ou sites externos no seu menu esquerdo. NbOfBoomarkToShow=Número máximo de marcadores para mostrar no menu esquerdo -##### WebServices ##### WebServicesSetup=Configurações do módulo de serviço de web WebServicesDesc=Ativando esse módulo, Dolibarr se torna um servidor de serviços web e fornece vários serviços web. WSDLCanBeDownloadedHere=Arquivos descritor WSDL que fornece serviços que podem ser baixados aqui EndPointIs=Os clientes SOAP devem enviar suas solicitações para o destinatário Dolibarr disponível na URL -##### API #### ApiSetup=Instalação de módulo de API ApiDesc=Ao ativar este módulo, Dolibarr se tornar um servidor REST para fornecer serviços de web diversos. ApiProductionMode=Habilitar o modo produção (isto ativará o uso de caches para o gerenciamento dos serviços) ApiExporerIs=Você pode explorar as APIs no URL OnlyActiveElementsAreExposed=Somente elementos de módulos habilitados são expostos ApiKey=Chave para API -##### Bank ##### BankSetupModule=Configurações do módulo bancário FreeLegalTextOnChequeReceipts=Texto livre para recibos de cheque BankOrderShow=Mostrar ordem das contas bancárias para países usando "Número do banco detalhado" -BankOrderGlobal=Geral BankOrderGlobalDesc=Ordem geral exibida BankOrderES=Espanhol BankOrderESDesc=Ordem espanhola exibida ChequeReceiptsNumberingModule=Módulo de Numeração dos Comprovantes de Cheque - -##### Multicompany ##### MultiCompanySetup=Configurações do módulo multi-empresas -##### Suppliers ##### SuppliersSetup=Configurações do módulo de fornecedores SuppliersCommandModel=Template completo de pedidos de fornecedores (logo...) SuppliersInvoiceModel=Template completo de faturas de fornecedores (logo...) SuppliersInvoiceNumberingModel=Modelo de numeração de faturas de fornecedores IfSetToYesDontForgetPermission=Se definido como sim, não se esqueça de fornecer permissões a grupos ou usuários autorizados para a segunda aprovação -##### GeoIPMaxmind ##### GeoIPMaxmindSetup=Configurações do módulo GeoIP Maxmind PathToGeoIPMaxmindCountryDataFile=Caminho do arquivo que contêm Maxmind ip para tradução do país.<br>Exemplos:<br>/usr/local/share/GeoIP/GeoIP.dat<br>/usr/share/GeoIP/GeoIP.dat NoteOnPathLocation=Nota que seu ip para o arquivo de dados do país deve estar dentro do diretório do seu PHP que possa ser lido (Verifique a configuração do seu PHP open_basedir e o sistema de permissões). YouCanDownloadFreeDatFileTo=Você pode baixar uma <b>Versão demo</b> do arquivo Maxmind GeoIP do seu país no %s. YouCanDownloadAdvancedDatFileTo=Você também pode baixar uma versão mais completa, com updates do arquivo Maxmind GeoIP do seu país no %s. TestGeoIPResult=Teste a conversão IP -> país -##### Projects ##### ProjectsNumberingModules=Modelo de numeração de projetos ProjectsSetup=Configurações do módulo de projetos ProjectsModelModule=Modelo de documento de relatório de projeto TasksNumberingModules=Modelo de numeração de tarefas TaskModelModule=Modelo de numeração de relatório de tarefas UseSearchToSelectProject=Use campos de completação automática para escolher projeto (em vez de usar uma caixa de lista) -##### ECM (GED) ##### -##### Fiscal Year ##### -AccountingPeriods=Períodos de contabilidade -AccountingPeriodCard=Período de contabilidade NewFiscalYear=Novo período de contabilidade OpenFiscalYear=Período da contabilidade em aberto CloseFiscalYear=Período da contabilidade fechada @@ -1539,12 +1300,9 @@ NbNumMin=Número mínimo de caracteres numéricos NbSpeMin=Número mínimo de caracteres especiais NbIteConsecutive=Numero maximo dos mesmos caracteres repetidos NoAmbiCaracAutoGeneration=Não use caracteres ambíguos ("1","l","i","|","0","O") para a geração automática -SalariesSetup=Configuração do módulo de salários SortOrder=Ordem de classificação -Format=Formato TypePaymentDesc=0: Pagamento para Cliente, 1: Pagamento para Fornecedor, 2: Pagamentos para Clientes e Fornecedores IncludePath=Incluir caminho (definido na variável %s) -ExpenseReportsSetup=Configuração do módulo de Relatórios de Despesas TemplatePDFExpenseReports=Modelos de documentos para gerar despesa documento de relatório NoModueToManageStockIncrease=Nenhum módulo disponível foi ativado para gerenciar o aumento automático do estoque. O aumento do estoque será feito apenas de forma manual. YouMayFindNotificationsFeaturesIntoModuleNotification=Você pode encontrar opções para notificações por email por habilitar e configurar o módulo "Notificação". @@ -1565,7 +1323,6 @@ TextTitleColor=Cor do título da página LinkColor=Cor dos linques PressF5AfterChangingThis=Pressione F5 no teclado depois de mudar este valor para tê-lo eficaz NotSupportedByAllThemes=Trabalhará com os temas principais, pode não ser suportado por temas externos -BackgroundColor=Cor de fundo TopMenuBackgroundColor=Cor de fundo para o menu de topo TopMenuDisableImages=Ocultar imagens no menu Superior LeftMenuBackgroundColor=Cor do fundo para o menu esquerdo @@ -1582,7 +1339,6 @@ RecuperableOnly=Sim para VAT "Non Perçue Récupérable" dedicado a alguns estad UrlTrackingDesc=Se o prestador do serviço de transporte oferece uma página ou um site na web para verificação da situação do seu envio, você pode inserir seu endereço aqui. Você pode usar a chave {TRACKID} nos parâmetros da URL de forma que o sistema a substitua com o valor do número de rastreamento que o usuário inseriu no cartão de envio. OpportunityPercent=Quando você cria uma oportunidade, você definiu um valor estimado para o projeto. De acordo com a situação da oportunidade, este valor pode ser multiplicado por esta taxa para avaliação do valor global que todas as suas oportunidades podem gerar. O valor é uma porcentagem (entre 0 e 100). TemplateForElement=O registro deste tema é dedicado a qual elemento -TypeOfTemplate=Tipo de modelo TemplateIsVisibleByOwnerOnly=Template é visível somente pelo proprietário FixTZ=Consertar TimeZone FillFixTZOnlyIfRequired=Exemplo: +2 (preencher apenas se experimentou um problema) diff --git a/htdocs/langs/pt_BR/agenda.lang b/htdocs/langs/pt_BR/agenda.lang index 4c5fdf8a2966c9cf9bf5e0c91be182405d66897f..e13fa066b2d5c61f9ad4d0fbe3e4bc81ca486e6a 100644 --- a/htdocs/langs/pt_BR/agenda.lang +++ b/htdocs/langs/pt_BR/agenda.lang @@ -1,26 +1,17 @@ # Dolibarr language file - Source file is en_US - agenda -IdAgenda=ID do evento Actions=Eventos -Agenda=Agenda -Agendas=Agendas LocalAgenda=Calendário local ActionsOwnedBy=Evento de propriedade do ActionsOwnedByShort=Proprietário -AffectedTo=Atribuído a Event=Evento -Events=Eventos -EventsNb=Número de eventos ListOfActions=Lista de eventos -Location=Localização ToUserOfGroup=Para qualquer usuário no grupo EventOnFullDay=Evento no(s) dia(s) todo MenuToDoActions=Todos os eventos incompletos -MenuDoneActions=Todos os eventos terminados MenuToDoMyActions=Meus eventos incompletos MenuDoneMyActions=Meus eventos terminados ListOfEvents=Lista de eventos Dolibarr ActionsAskedBy=Eventos relatados pelo -ActionsToDoBy=Eventos atribuídos a ActionsDoneBy=Eventos feito por ActionAssignedTo=Evento atribuído a ViewCal=Ver Mês @@ -28,32 +19,15 @@ ViewDay=Ver dia ViewWeek=ver semana ViewPerUser=Visão do usuário ViewPerType=Por visualização de tipo -AutoActions= Preenchimento automático -AgendaAutoActionDesc= Defina aqui eventos para os quais você queira que o Dolibarr crie automaticamente uma evento na agenda. Se nada for confirmado, apenas ações manuais terão registro e visibilidade inclusos na agenda. O rastreamento automático de ações de negócio realizadas sobre objetos (validação, alteração de estado) não serão salvos. -AgendaSetupOtherDesc= Essa página fornece a opção de exportar seus eventos Dolibarr para um calendário externo (thunderbird, google, ...) +AgendaAutoActionDesc=Defina aqui eventos para os quais você queira que o Dolibarr crie automaticamente uma evento na agenda. Se nada for confirmado, apenas ações manuais terão registro e visibilidade inclusos na agenda. O rastreamento automático de ações de negócio realizadas sobre objetos (validação, alteração de estado) não serão salvos. +AgendaSetupOtherDesc=Essa página fornece a opção de exportar seus eventos Dolibarr para um calendário externo (thunderbird, google, ...) AgendaExtSitesDesc=Essa página permite declarar calendários externos para serem visto nos eventos da agenda Dolibarr. ActionsEvents=Eventos no qual Dolibarr cria uma ação na agenda automáticamente. -##### Agenda event labels ##### -NewCompanyToDolibarr=Terceiro %s criados -ContractValidatedInDolibarr=Contrato %s validado -PropalClosedSignedInDolibarr=Proposta %s assinada -PropalClosedRefusedInDolibarr=Proposta %s declinada PropalValidatedInDolibarr=Orçamento %s validado -PropalClassifiedBilledInDolibarr=Proposta %s classificada faturada InvoiceValidatedInDolibarr=Fatura %s validada InvoiceValidatedInDolibarrFromPos=Fatura %s validada no POS InvoiceBackToDraftInDolibarr=Fatura %s voltou para o status de rascunho InvoiceDeleteDolibarr=Fatura %s deletada -InvoicePaidInDolibarr=Fatura %s marcada paga -InvoiceCanceledInDolibarr=Fatura %s cancelada -MemberValidatedInDolibarr=Membro %s validado -MemberResiliatedInDolibarr=Membro %s finalizado -MemberDeletedInDolibarr=Membro %s cancelado -MemberSubscriptionAddedInDolibarr=Inscrição do membo %s adicionada -ShipmentValidatedInDolibarr=Envio %s validado -ShipmentClassifyClosedInDolibarr=Expedição %s classificada como faturada -ShipmentUnClassifyCloseddInDolibarr=Expedição %s classificada como reaberta -ShipmentDeletedInDolibarr=Envio %s cancelado OrderValidatedInDolibarr=Pedido %s validado OrderDeliveredInDolibarr=Ordem %s classificadas entregues OrderCanceledInDolibarr=Pedido %s cancelado @@ -67,12 +41,12 @@ InvoiceSentByEMail=Fatura de cliente %s enviado por e-mail SupplierOrderSentByEMail=Pedido de fornecedor %s enviado por e-mail SupplierInvoiceSentByEMail=Fatura de fornecedor %s enviado por e-mail ShippingSentByEMail=Frete %s enviado por e-mail -ShippingValidated= Envio %s validado +ShippingValidated=Envio %s validado InterventionSentByEMail=Intervenção %s enviado por e-mail ProposalDeleted=Proposta excluída OrderDeleted=Pedido excluído InvoiceDeleted=Fatura excluída -##### End agenda events ##### +NewCompanyToDolibarr=Terceiro %s criados DateActionStart=Data de início DateActionEnd=Data de término AgendaUrlOptions1=Você também pode adicionar os seguintes parâmetros nos filtros de saída: @@ -82,15 +56,10 @@ AgendaUrlOptions4=<b>logint=%s</b> para restringir a saída para ações atribu AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> para restringir a saida de açoes associadas ao projeto <b>PROJECT_ID</b>. AgendaShowBirthdayEvents=Mostrar datas de nascimento dos contatos AgendaHideBirthdayEvents=Ocultar datas de nascimento dos contatos -Busy=Ocupado ExportDataset_event1=Lista dos eventos da agenda DefaultWorkingDays=Padrão dias úteis por semana (Exemplo: 1-5, 1-6) DefaultWorkingHours=Padrão horas de trabalho em dia (Exemplo: 9-18) -# External Sites ical -ExportCal=Exportar calendário -ExtSites=Importar calendários externos ExtSitesEnableThisTool=Mostrar calendários externos na agenda -ExtSitesNbOfAgenda=Número de calendários AgendaExtNb=Calendário núm %s ExtSiteUrlAgenda=URL para acessar arquivos .ical ExtSiteNoLabel=Sem descrição @@ -98,13 +67,10 @@ VisibleTimeRange=Intervalo de tempo visível VisibleDaysRange=Intervalo de dias visíveis AddEvent=Criar evento MyAvailability=Minha disponibilidade -ActionType=Tipo de evento DateActionBegin=Iniciar a data do evento CloneAction=Evento Clone ConfirmCloneEvent=Tem certeza que deseja clonar o evento <b>%s</b>? RepeatEvent=Repita evento EveryWeek=Toda semana EveryMonth=Todo mês -DayOfMonth=Dia do mês -DayOfWeek=Dia da semana DateStartPlusOne=Data de início + 1 hora diff --git a/htdocs/langs/pt_BR/banks.lang b/htdocs/langs/pt_BR/banks.lang index e6ca16ac8abe862fa5e3404ec23df79e3ddac71d..668d886150b5e6b631f55e4327e910779caac398 100644 --- a/htdocs/langs/pt_BR/banks.lang +++ b/htdocs/langs/pt_BR/banks.lang @@ -1,19 +1,13 @@ # Dolibarr language file - Source file is en_US - banks -Bank=Banco MenuBankCash=Banco/Caixa -BankName=Nome do banco -FinancialAccount=Conta -BankAccount=Conta bancária BankAccounts=Contas bancárias ShowAccount=Mostrar conta AccountRef=Ref. da conta financeira AccountLabel=Rótulo da conta financeira CashAccount=Conta caixa CashAccounts=Contas caixas -CurrentAccounts=Contas correntes SavingAccounts=Contas poupança ErrorBankLabelAlreadyExists=Rótulo de conta financeira já existente -BankBalance=Saldo BankBalanceBefore=Saldo anterior BankBalanceAfter=Saldo posterior BalanceMinimalAllowed=Saldo mínimo permitido @@ -26,10 +20,6 @@ ShowAllTimeBalance=Mostrar saldo desde o início AllTime=Desde o início Reconciliation=Reconciliação RIB=Número da conta bancária -IBAN=Número IBAN -BIC=Código BIC/SWIFT -StandingOrders=Ordens de Débito direto -StandingOrder=Ordem de débito direto AccountStatement=Extrato da conta AccountStatementShort=Extrato AccountStatements=Extratos da conta @@ -41,7 +31,6 @@ BankAccountOwner=Nome do titular da conta BankAccountOwnerAddress=Endereço do titular da conta RIBControlError=Verificação da integridade dos valores falhou. Isso significa que esse número de conta não esta completo ou errado (verifique país, número e agência). CreateAccount=Criar conta -NewBankAccount=Nova conta NewFinancialAccount=Nova conta financeira MenuNewFinancialAccount=Nova conta financeira EditFinancialAccount=Editar conta @@ -54,7 +43,6 @@ AccountsArea=Área das contas AccountCard=Ficha da conta DeleteAccount=Excluir conta ConfirmDeleteAccount=Tem certeza que deseja deletar esta conta? -Account=Conta BankTransactionByCategories=Transações bancárias por categorias BankTransactionForCategory=Transações bancárias por categoria <b>%s</b> RemoveFromRubrique=Remover vínculo com categoria @@ -77,7 +65,6 @@ ConciliationDisabled=Função de reconciliação desativada LinkedToAConciliatedTransaction=Vinculado a uma transação conciliada StatusAccountOpened=Ativa StatusAccountClosed=Inativa -AccountIdShort=Número LineRecord=Transação AddBankRecord=Adicionar transação AddBankRecordLong=Adicionar manualmente uma transação @@ -86,19 +73,12 @@ DateConciliating=Data da reconciliação BankLineConciliated=Transação reconciliada Reconciled=Conciliada NotReconciled=Não conciliada -CustomerInvoicePayment=Pagamento de cliente SupplierInvoicePayment=Pagamento a fornecedores -SubscriptionPayment=Pagamento Assinatura -WithdrawalPayment=Pagamento de retirada SocialContributionPayment=Pagamento de contribuição social -BankTransfer=Transferência bancária BankTransfers=Transferências bancárias MenuBankInternalTransfer=Transferência interna TransferDesc=Transferência de uma conta para outra, o Dolibarr criará dois registros (um débito na conta de origem e um crédito na conta de destino. A mesma quantia (exceto o sinal), rótulo e data serão usados para esta transação). -TransferFrom=De -TransferTo=Para TransferFromToDone=Uma transferência de <b>%s</b> para <b>%s</b> de <b>%s</b> %s foi registrado. -CheckTransmitter=Emissor ValidateCheckReceipt=Validar este comprovante de cheque? ConfirmValidateCheckReceipt=Você tem certeza que deseja validar este comprovante de cheque, mesmo sabendo que nenhuma mudança poderá ser feita depois? DeleteCheckReceipt=Excluir este recibo de cheque? @@ -106,13 +86,10 @@ ConfirmDeleteCheckReceipt=Você tem certeza que deseja excluir este comprovante BankChecks=Cheques do banco BankChecksToReceipt=Cheques aguardando depósito ShowCheckReceipt=Mostrar recibo de depósito do cheque -NumberOfCheques=Nº de cheques DeleteTransaction=Eliminar transação ConfirmDeleteTransaction=Você tem certeza que deseja excluir esta transação? ThisWillAlsoDeleteBankRecord=Isto eliminará também as transações bancárias geradas -BankMovements=Movimentos PlannedTransactions=Transações planejadas -Graph=Gráficos ExportDataset_banque_1=Transações bancárias e extrato da conta ExportDataset_banque_2=Comprovante de depósito TransactionOnTheOtherAccount=Transação de outra conta @@ -132,9 +109,7 @@ EventualyAddCategory=Eventualmente, especifique a categoria na qual os registros ToConciliate=Conciliar? ThenCheckLinesAndConciliate=Então, verifique as linhas presente no estrato bancário e clique DefaultRIB=BAN padrão -AllRIB=Todos os BAN LabelRIB=Rótulo do BAN -NoBANRecord=Nenhum registro de BAN DeleteARib=Excluir registro de BAN ConfirmDeleteRib=Você tem certeza que deseja excluir este registro BAN? RejectCheck=Cheque devolvido diff --git a/htdocs/langs/pt_BR/bills.lang b/htdocs/langs/pt_BR/bills.lang index 437d6c2843988cefbc0a37c72bc2c7295c88a0bd..6ce87c69561c53bf740c8745d3340bccc6f5bdc4 100644 --- a/htdocs/langs/pt_BR/bills.lang +++ b/htdocs/langs/pt_BR/bills.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - bills -Bill=Fatura Bills=Faturas BillsCustomers=Faturas de cliente BillsCustomer=Fatura de cliente @@ -37,7 +36,6 @@ ReplacementByInvoice=Substituido por fatura CorrectInvoice=Fatura correta %s CorrectionInvoice=Correção de fatura UsedByInvoice=Usado para pagar fatura %s -ConsumedBy=Consumida por NotConsumed=Não consumida NoReplacableInvoice=Nenhuma fatura substituida NoInvoiceToCorrect=Nenhuma fatura para corrigir @@ -54,10 +52,8 @@ SupplierInvoice=Fatura de fornecedor SuppliersInvoices=Faturas de fornecedores SupplierBill=Fatura de fornecedor SupplierBills=Faturas de fornecedores -Payment=Pagamento PaymentBack=Reembolso de pagamento CustomerInvoicePaymentBack=Reembolso de pagamento -Payments=Pagamentos PaymentsBack=Reembolsos de pagamentos paymentInInvoiceCurrency=na moeda das faturas PaidBack=Reembolso pago @@ -65,12 +61,10 @@ DeletePayment=Deletar pagamento ConfirmDeletePayment=Você tem certeza que deseja excluir este pagamento? ConfirmConvertToReduc=Você deseja converter esta nota de crédito ou depósito em um desconto absoluto?<br>A quantia será então salva entre todos os descontos e poderá ser usada como um desconto para uma fatura atual ou futura para este cliente. SupplierPayments=Pagamentos a fornecedores -ReceivedPayments=Pagamentos recebidos ReceivedCustomersPayments=Pagamentos recebidos de cliente PayedSuppliersPayments=Pagamentos pago ao fornecedores ReceivedCustomersPaymentsToValid=Pagamentos recebidos de cliente para validar PaymentsReportsForYear=Relatórios de pagamentos por %s -PaymentsReports=Relatórios de pagamentos PaymentsAlreadyDone=Pagamentos já feitos PaymentsBackAlreadyDone=Reembolsos de pagamentos já feitos PaymentRule=Regra de pagamento @@ -82,13 +76,11 @@ PaymentTerm=Termo de pagamento PaymentConditions=Prazo de pagamento PaymentConditionsShort=Prazo de pagamento PaymentAmount=Valor a ser pago -ValidatePayment=Validar pagamento PaymentHigherThanReminderToPay=Pagamento superior ao valor a ser pago HelpPaymentHigherThanReminderToPay=Atenção, o valor do pagamento de uma ou mais fatura é superior ao valor restante a ser pago. <br> Edite sua entrada, caso contrário confirme e pense sobre em criar nota de crédito do valor excedido para cada fatura que foi paga a mais. HelpPaymentHigherThanReminderToPaySupplier=Atenção, o valor do pagamento de uma ou mais contas é maior do que o resto a pagar. <br> Edite sua entrada, caso contrário, confirmar. ClassifyPaid=Classificar 'pago' ClassifyPaidPartially=Classificar 'parcialmente pago' -ClassifyCanceled=Classificar 'Abandonado' ClassifyClosed=Classificar 'fechado' ClassifyUnBilled=Classificar "à faturar" CreateBill=Criar fatura @@ -113,13 +105,11 @@ BillStatusDraft=Rascunho (precisa ser validada) BillStatusPaid=Pago BillStatusPaidBackOrConverted=Pago ou convertido em desconto BillStatusConverted=Pago (pronto para fatura final) -BillStatusCanceled=Abandonada BillStatusValidated=Validado (precisa ser pago) BillStatusStarted=Iniciado BillStatusNotPaid=Não pago BillStatusClosedUnpaid=Fechado (não pago) BillStatusClosedPaidPartially=Pago (parcialmente) -BillShortStatusDraft=Rascunho BillShortStatusPaid=Pago BillShortStatusPaidBackOrConverted=Processado BillShortStatusConverted=Processado @@ -176,7 +166,6 @@ ConfirmClassifyPaidPartiallyReasonAvoirDesc=Use essa escolha se as outras não s ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=Um <b>cliente mau</b> é um cliente que se recusa a pagar seu débito. ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Essa escolha é usado quando o pagamento não é completo porque alguns produtos foram devolvidos ConfirmClassifyPaidPartiallyReasonOtherDesc=Use essa escolha se todas as outras não são adequados, por exemplo na seguinte situação:<br>- pagamento não completo porque alguns produtos foram devolvidos<br>- Quantia reivindicada é muito importante porque um desconto foi esquecido<br>Em todos os casos, quantia reivindicada deve estar correta no sistema de contabilidade pela criação de uma nota de crédito. -ConfirmClassifyAbandonReasonOther=Outro ConfirmClassifyAbandonReasonOtherDesc=Essa escolha será usado em todos os outros casos. Por exemplo porque você planeja criar fatura de substituição. ConfirmCustomerPayment=Você confirma o recebimento de pagamento para <b>%s</b> %s? ConfirmSupplierPayment=Você confirma o recebimento de pagamento para <b>%s</b> %s? @@ -198,7 +187,6 @@ ShowPayment=Mostrar pagamento AlreadyPaid=Já está pago AlreadyPaidBack=Já está estornado AlreadyPaidNoCreditNotesNoDeposits=Já está pago (sem notas de crédito e depósitos) -Abandoned=Abandonada RemainderToPay=Restante para pagar RemainderToTake=Restante para pegar RemainderToPayBack=Restante para estornar @@ -229,9 +217,7 @@ NoInvoice=Nenhuma fatura ClassifyBill=Classificar fatura SupplierBillsToPay=Faturas de fornecedores não pagos CustomerBillsUnpaid=Faturas de clientes não pagos -NonPercuRecuperable=Não recuperável SetConditions=Definir condições de pagamento -SetMode=Definir modo de pagamento SetRevenuStamp=Definir o selo da receita Billed=Faturado RecurringInvoices=Faturas recorrentes @@ -247,33 +233,23 @@ CustomersInvoicesAndPayments=Faturas de cliente e pagamentos ExportDataset_invoice_1=Lista de faturas de clientes e linhas de fatura ExportDataset_invoice_2=Faturas de clientes e pagamentos ProformaBill=Conta pro-forma: -Reduction=Redução ReductionShort=Redução Reductions=Reduções ReductionsShort=Reduções -Discounts=Descontos AddDiscount=Criar desconto -AddRelativeDiscount=Criar desconto relativo -EditRelativeDiscount=Editar desconto relativo AddGlobalDiscount=Criar desconto fixo EditGlobalDiscounts=Editar desconto fixo -AddCreditNote=Criar nota de crédito ShowDiscount=Mostrar desconto ShowReduc=Mostrar o desconto -RelativeDiscount=Desconto relativo GlobalDiscount=Desconto global CreditNote=Nota de crédito CreditNotes=Notas de crédito -Deposit=Depósito -Deposits=Depósitos DiscountFromCreditNote=Desconto de nota de crédito %s DiscountFromDeposit=Pagamentos de fatura de depósito %s AbsoluteDiscountUse=Esse tipo de crédito pode ser usado na fatura antes da validação CreditNoteDepositUse=A fatura deve ser validada para utilizar este tipo de crédito NewGlobalDiscount=Novo desconto fixo NewRelativeDiscount=Novo desconto relativo -NoteReason=Nota/Motivo -ReasonDiscount=Motivo DiscountOfferedBy=Concedido por DiscountStillRemaining=Descontos ainda remanescente DiscountAlreadyCounted=Desconto já foram aplicados @@ -290,7 +266,6 @@ InvoiceDateCreation=Data da criação da fatura InvoiceStatus=Status da fatura InvoiceNote=Nota de fatura InvoicePaid=Fatura paga -PaymentNumber=Número de pagamento RemoveDiscount=Remover desconto WatermarkOnDraftBill=Marca d'água nos rascunhos de faturas (nada se vazio) InvoiceNotChecked=Nenhuma fatura selecionada @@ -329,26 +304,20 @@ InvoiceAutoValidate=Validar as faturas automaticamente GeneratedFromRecurringInvoice=Gerar a partir do tem de fatura recorrente %s DateIsNotEnough=Data ainda não alcançada InvoiceGeneratedFromTemplate=Fatura %s gerada a partir do tema de fatura recorrente %s -# PaymentConditions PaymentConditionShortRECEP=Imediato PaymentConditionRECEP=Imediato -PaymentConditionShort30D=30 dias PaymentCondition30D=30 dias PaymentConditionShort30DENDMONTH=30 dias do fim do mês PaymentCondition30DENDMONTH=Dentro de 30 dias após o fim do mês -PaymentConditionShort60D=60 dias PaymentCondition60D=60 dias PaymentConditionShort60DENDMONTH=60 dias do fim do mês PaymentCondition60DENDMONTH=Dentro de 60 dias após o fim do mês PaymentConditionShortPT_DELIVERY=Na entrega -PaymentConditionPT_DELIVERY=Na entrega PaymentConditionShortPT_ORDER=Pedido PaymentConditionPT_ORDER=No pedido -PaymentConditionShortPT_5050=50-50 PaymentConditionPT_5050=50%% adiantado e 50%% na entrega FixAmount=Corrigir valor VarAmount=Variavel valor (%% total) -# PaymentType PaymentTypeVIR=Transferência bancária PaymentTypeShortVIR=Transferência bancária PaymentTypePRE=Pedido com pagamento em Débito direto @@ -357,8 +326,6 @@ PaymentTypeLIQ=Dinheiro PaymentTypeShortLIQ=Dinheiro PaymentTypeCB=Cartão de crédito PaymentTypeShortCB=Cartão de crédito -PaymentTypeCHQ=Cheque -PaymentTypeShortCHQ=Cheque PaymentTypeTIP=TIP (Documentos contra Pagamento) PaymentTypeShortTIP=Pagamento TIP PaymentTypeVAD=Pagamento online @@ -375,7 +342,6 @@ BankAccountNumberKey=Chave Residence=Débito automático IBANNumber=Número da agencia IBAN=Agencia -BIC=BIC/SWIFT BICNumber=Número BIC/SWIFT ExtraInfos=Informações extras RegulatedOn=Regulamentado em @@ -383,12 +349,9 @@ ChequeNumber=Nº do Cheque ChequeOrTransferNumber=Nº do cheque/transferência ChequeBordereau=Verificar agendamento ChequeMaker=Cheque/transmissor de Transferência -ChequeBank=Banco do cheque -CheckBank=Verificar NetToBePaid=Líquido a ser pago PhoneNumber=Telefone FullPhoneNumber=Telefone -TeleFax=Fax PrettyLittleSentence=Aceito o valor do pagamento devido pelo cheque emitido em meu nome como membro de uma associação de contabilidade aprovado pelo administração fiscal. IntracommunityVATNumber=Número intracomunitário do ICMS PaymentByChequeOrderedTo=Pagamento em cheque (incluindo taxa) é pagável para %s enviar para @@ -401,7 +364,6 @@ LawApplicationPart2=os bens permanece propriedade de LawApplicationPart3=o vendedor até que o desconto completo de LawApplicationPart4=preço dele. LimitedLiabilityCompanyCapital=SARL com capital de -UseLine=Aplicar UseDiscount=Usar desconto UseCredit=Usar crédito UseCreditNoteInInvoicePayment=Reduzir o valor a ser pago com esse crédito @@ -412,7 +374,6 @@ NewChequeDeposit=Novo depósito ChequesReceipts=Recibos de cheques ChequesArea=Área de cheques depositados ChequeDeposits=depósitos de cheques -Cheques=Cheques DepositId=Depósito Id NbCheque=Número de cheques CreditNoteConvertedIntoDiscount=Essa nota de crédito ou fatura de depósito foi convertida em %s @@ -422,19 +383,15 @@ ShowUnpaidLateOnly=Mostrar todas as faturas atrasadas não pagas PaymentInvoiceRef=Pagamento de fatura %s ValidateInvoice=validar fatura Cash=DinheiroCash -Reported=Atrasado DisabledBecausePayments=Não é possivel devido alguns pagamentos CantRemovePaymentWithOneInvoicePaid=Não posso remover pagamento ao menos que o última fatura sejá classificada como pago ExpectedToPay=Esperando pagamento CantRemoveConciliatedPayment=Não pode remover a conciliação de pagamento -PayedByThisPayment=Pago por esse pagamento ClosePaidInvoicesAutomatically=Classificar "pago" todos padão or substituir faturas inteiramente pago. ClosePaidCreditNotesAutomatically=Classificar "pago" todas notas de crédito inteiramente pago de volta. ClosePaidContributionsAutomatically=Classificar como "Pagas" todas as contribuições sociais ou fiscais quitadas. AllCompletelyPayedInvoiceWillBeClosed=Todas faturas sem permanencia para pagar será automaticamente fechada com status "pago". -ToMakePayment=Pagar ToMakePaymentBack=Pagar de volta -ListOfYourUnpaidInvoices=Lista de faturas não pagas NoteListOfYourUnpaidInvoices=Nota: Essa lista contém faturas de terceiros que você está a ligado como representante de vendas. RevenueStamp=Selo de receita YouMustCreateInvoiceFromThird=Esta opção está apenas disponível quando da criação de uma fatura a partir da aba "cliente" de terceiro @@ -445,7 +402,6 @@ PDFCrevetteDescription=Tema Crevette para fatura em PDF. Um tema completo para a TerreNumRefModelDesc1=Retorna número com formato %syymm-nnnn para padrão de faturas e %syymm-nnnn para notas de crédito onde yy é ano, mm é mês e nnnn é uma sequência numérica sem quebra e sem retorno para 0 MarsNumRefModelDesc1=Retorna número com formato %syymm-nnnn para padrão de faturas, %syymm-nnnn para faturas substituidas, %syymm-nnnn para crédito de notas e %syymm-nnnn para notas de créditos onde yy é ano, mm é mês e nnnn é uma sequência sem quebra e sem retorno a 0 TerreNumRefModelError=Uma conta começa com %syymm já existe e não é compatível com esse modelo de sequência. Remova ou renomeie ele para ativar esse módulo. -##### Types de contacts ##### TypeContact_facture_internal_SALESREPFOLL=Representativo seguindo de fatura de cliente TypeContact_facture_external_BILLING=Contato de fatura de cliente TypeContact_facture_external_SHIPPING=Contato de envio de cliente @@ -454,7 +410,6 @@ TypeContact_invoice_supplier_internal_SALESREPFOLL=Representativo seguido de fat TypeContact_invoice_supplier_external_BILLING=Contato de fatura de fornecedor TypeContact_invoice_supplier_external_SHIPPING=Contato de envio de fornecedor TypeContact_invoice_supplier_external_SERVICE=Contato de serviço do fornecedor -# Situation invoices InvoiceFirstSituationAsk=Primeira situação da fatura InvoiceFirstSituationDesc=A <b>situação faturas</b> são amarradas às situações relacionadas com uma progressão, por exemplo, a progressão de uma construção. Cada situação é amarrada a uma fatura. InvoiceSituation=Situação da fatura @@ -462,11 +417,9 @@ InvoiceSituationAsk=Fatura acompanhando a situação InvoiceSituationDesc=Criar uma nova situação na sequência de um um já existente SituationAmount=Situação montante da fatura (líquida) SituationDeduction=Situação subtração -ModifyAllLines=Modificar todas as linhas CreateNextSituationInvoice=Criar proxima situação NotLastInCycle=Esta fatura não é a última do ciclo e não deve ser modificada. DisabledBecauseNotLastInCycle=A próxima situação já existe. -DisabledBecauseFinal=Esta situação é final. CantBeLessThanMinPercent=O progresso não pode ser menor do que o seu valor na situação anterior. NoSituations=Não há situações em aberto InvoiceSituationLast=Fatura final e geral @@ -482,4 +435,3 @@ ToCreateARecurringInvoiceGene=Para gerar as futuras faturas regular e manualment ToCreateARecurringInvoiceGeneAuto=Se você deseja ter tais faturas sendo geradas automaticamente, peça ao seu Administrador para habilitar e configurar o módulo <strong>%s</strong>. Note que ambos os métodos (manual e automático) podem ser usados em conjunto sem o risco de duplicação. DeleteRepeatableInvoice=Excluir tema de fatura ConfirmDeleteRepeatableInvoice=Você tem certeza que deseja excluir o tema de fatura? - diff --git a/htdocs/langs/pt_BR/bookmarks.lang b/htdocs/langs/pt_BR/bookmarks.lang index 598d12767d82352e3a14b36b5c50d970f74e9a1d..1ad92390b9c7bf3afd7b7f8b30984d19ecb21621 100644 --- a/htdocs/langs/pt_BR/bookmarks.lang +++ b/htdocs/langs/pt_BR/bookmarks.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - Source file is en_US - marque pages +# Dolibarr language file - Source file is en_US - bookmarks AddThisPageToBookmarks=Adicionar essa página aos marcadores Bookmark=Marcador Bookmarks=Marcadores @@ -6,10 +6,8 @@ NewBookmark=Novo marcador ShowBookmark=Mostrar marcador OpenANewWindow=Abrir uma nova janela ReplaceWindow=Substituir atual janela -BookmarkTargetNewWindowShort=Nova janela BookmarkTargetReplaceWindowShort=Atual janela BookmarkTitle=Título do marcador -UrlOrLink=URL BehaviourOnClick=Comportamento quando a URL é clicada CreateBookmark=Criar marcador SetHereATitleForLink=Colocar título para o marcador diff --git a/htdocs/langs/pt_BR/boxes.lang b/htdocs/langs/pt_BR/boxes.lang index 0a7d839079f4e0f6322244936b8c28f0a043ad9d..e3ed64b9fff71f335d8d9e5f1c14421b8c06a561 100644 --- a/htdocs/langs/pt_BR/boxes.lang +++ b/htdocs/langs/pt_BR/boxes.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - boxes -BoxLastRssInfos=Informação RSS BoxLastProducts=Últimos %s produtos/serviços BoxProductsAlertStock=Alertas de estoque para produtos BoxLastProductsInContract=Últimos %s produtos/serviços contratados @@ -47,8 +46,6 @@ BoxTitleGoodCustomers=%s bons clientes FailedToRefreshDataInfoNotUpToDate=Falha na atualizacao do fulxo RSS. Ultima data da atualizacao: %s LastRefreshDate=Ultima data atualizacao NoRecordedBookmarks=Nenhum marcador definido. -ClickToAdd=Clique aqui para adicionar. -NoRecordedCustomers=Nenhum cliente registado NoRecordedContacts=Nenhum contato registrado NoActionsToDo=Nenhuma ação para fazer NoRecordedOrders=Nenhum pedido de cliente registrado @@ -63,15 +60,12 @@ NoContractedProducts=Nenhum produtos/serviços contratados NoRecordedContracts=Nenhum registro de contratos NoRecordedInterventions=Nenhum registro de intervenções BoxLatestSupplierOrders=Mais recentes pedidos de fornecedores -NoSupplierOrder=Nenhum registro de pedido de fornecedor BoxCustomersInvoicesPerMonth=Faturas de cliente por mês BoxSuppliersInvoicesPerMonth=Faturas de fornecedor por mês BoxCustomersOrdersPerMonth=Pedidos de clientes por mês BoxSuppliersOrdersPerMonth=Pedidos de fornecedor por mês BoxProposalsPerMonth=Orçamentos por mês NoTooLowStockProducts=Nenhum produto abaixo do estoque mínimo -BoxProductDistribution=Distribuição de Produtos/Serviços -BoxProductDistributionFor=Distribuição de %s para %s BoxTitleLastModifiedSupplierBills=Ultimos %s notas fornecedores modificadas BoxTitleLatestModifiedSupplierOrders=Ultimas %s ordems de fornecedores modificadas BoxTitleLastModifiedCustomerBills=Ultimos %s notas de clientes modificadas @@ -79,6 +73,5 @@ BoxTitleLastModifiedCustomerOrders=Ultimos %s pedidos de clientes modificados BoxTitleLastModifiedPropals=Ultimas %s propostas modificadas ForCustomersInvoices=Faturas de clientes ForCustomersOrders=Pedidos de clientes -ForProposals=Orçamentos LastXMonthRolling=Ultima %s mensal ChooseBoxToAdd=Adicionar widget para sua area de notificacoes diff --git a/htdocs/langs/pt_BR/cashdesk.lang b/htdocs/langs/pt_BR/cashdesk.lang index 0aed4ab39d428cb62a7685537f84323d447e9912..2a6394332a4a1d8b5829c2b399b5aa51755e06c8 100644 --- a/htdocs/langs/pt_BR/cashdesk.lang +++ b/htdocs/langs/pt_BR/cashdesk.lang @@ -1,33 +1,17 @@ -# Language file - Source file is en_US - cashdesk -CashDeskMenu=Ponto de venda -CashDesk=Ponto de venda -CashDeskBankCash=Conta bancária (dinheiro) -CashDeskBankCB=Conta bancária (cartão) -CashDeskBankCheque=Conta bancária (cheque) -CashDeskWarehouse=Armazém +# Dolibarr language file - Source file is en_US - cashdesk CashdeskShowServices=Serviços de venda -CashDeskProducts=Produtos CashDeskStock=Estoque CashDeskOn=ligar -CashDeskThirdParty=Terceiro -ShoppingCart=Carrinho de compras NewSell=Nova venda AddThisArticle=Adicionar esse artigo RestartSelling=Voltar na venda SellFinished=Venda completada PrintTicket=Imprimir tíquete -NoProductFound=Nenhum artigo encontrado -ProductFound=produto encontrado -NoArticle=Nenhum artigo -Identification=Identificação -Article=Artigo -Difference=Diferença TotalTicket=Total do tíquite NoVAT=Nenhum ICMS para essa venda Change=Excesso recebido BankToPay=Cobrar conta ShowCompany=Mostar empresa -ShowStock=Mostrar armazém DeleteArticle=Clique para remover esse artigo FilterRefOrLabelOrBC=Procurar (Ref/Rótulo) UserNeedPermissionToEditStockToUsePos=Você tentou retirar do estoque com a emissão da fatura, mas o usuário precisa ter permissão para editar estoque. diff --git a/htdocs/langs/pt_BR/categories.lang b/htdocs/langs/pt_BR/categories.lang index 090c2435c880f596f0596293e7e922b6333620ff..f7d3809ed586d6f89d828db043f2f651154fcb36 100644 --- a/htdocs/langs/pt_BR/categories.lang +++ b/htdocs/langs/pt_BR/categories.lang @@ -4,15 +4,12 @@ Rubriques=Tags/Categorias categories=tags/categorias NoCategoryYet=Nenhuma tag/categoria deste tipo foi criada In=Em -AddIn=Adicionar em -modify=Modificar -Classify=Classificar CategoriesArea=Área Tags / Categorias ProductsCategoriesArea=Área tags / categorias de Produtos / Serviços SuppliersCategoriesArea=Área tags / categorias de Fornecedores CustomersCategoriesArea=Área tags / categorias de Clientes MembersCategoriesArea=Área tags / categorias de Membros -ContactsCategoriesArea=Área tags / categorias de Contatos +ContactsCategoriesArea=Área tags / categorias de Contatos AccountsCategoriesArea=Tags/categorias da área de Contas ProjectsCategoriesArea=Projetos area de tags/categorias SubCats=Subcategorias @@ -23,10 +20,8 @@ CatCreated=Tag/categoria criada CreateCat=Criar tag/categoria CreateThisCat=Criar esta tag/categoria NoSubCat=Nenhuma subcategoria. -SubCatOf=Subcategoria FoundCats=Encontrada tags / categorias ImpossibleAddCat=Impossível associar a tag/categoria %s -WasAddedSuccessfully=Foi adicionado com êxito. ObjectAlreadyLinkedToCategory=Elemento já está ligada a esta tag / categoria. ProductIsInCategories=Produto / serviço está ligada à seguintes tags / categorias CompanyIsInCustomersCategories=Este Terceiro está vinculado às seguintes tags/categorias de Clientes/Prospects @@ -40,7 +35,6 @@ ContactHasNoCategory=Este contato não está em nenhum tags / categorias ProjectHasNoCategory=Este projeto nao esta em nenhuma tag/categoria ClassifyInCategory=Adicionar para tag / categoria NotCategorized=Sem tag / categoria -CategoryExistsAtSameLevel=Esta categoria já existe na mesma localização ContentsVisibleByAllShort=Conteúdo visivel por todos ContentsNotVisibleByAllShort=Conteúdo não visivel por todos DeleteCategory=Excluir tag / categoria @@ -53,7 +47,6 @@ MembersCategoryShort=Membros tag / categoria SuppliersCategoriesShort=Fornecedores tags / categorias CustomersCategoriesShort=Clientes tags / categorias ProspectsCategoriesShort=Tag/categoria Prospecção -CustomersProspectsCategoriesShort=Cat. Clientes/Potenciais ProductsCategoriesShort=Produtos tags / categorias MembersCategoriesShort=Tag / categorias de Membros ContactCategoriesShort=Contatos tags / categorias @@ -83,4 +76,3 @@ CategorieRecursiv=Fazer a ligação com os pais tag/categoria automaticamente CategorieRecursivHelp=Se ativado, o produto também será ligada a categoria original quando adicionando em uma subcategoria AddProductServiceIntoCategory=Adicione o seguinte produto / serviço ShowCategory=Mostrar tag / categoria -ByDefaultInList=Por padrão em lista diff --git a/htdocs/langs/pt_BR/commercial.lang b/htdocs/langs/pt_BR/commercial.lang index a172735024bf9813be186f8ab02d4fb4b08b8937..1b2cd595c3bafbdc8b4a4dda474ee49f5e0a6381 100644 --- a/htdocs/langs/pt_BR/commercial.lang +++ b/htdocs/langs/pt_BR/commercial.lang @@ -1,9 +1,5 @@ # Dolibarr language file - Source file is en_US - commercial -Commercial=Comercial CommercialArea=Departamento comercial -Customer=Cliente -Customers=Clientes -Prospect=Prospecto de cliente Prospects=Prospectos de cliente DeleteAction=Excluir um evento NewAction=Novo evento @@ -14,7 +10,6 @@ ConfirmDeleteAction=Tem certeza que quer deleitaar este evento ? CardAction=Ficha de evento ActionOnCompany=Empresa relacionada ActionOnContact=Contato relacionado -TaskRDVWith=Reunião com %s ShowTask=Mostrar tarefa ShowAction=Mostrar evento ActionsReport=Relatório de eventos @@ -35,14 +30,11 @@ DoneActions=Eventos concluídos ToDoActions=Eventos não concluídos SendPropalRef=Enviar orçamento %s SendOrderRef=Enviar pedido %s -StatusNotApplicable=Não aplicável StatusActionToDo=Para fazer StatusActionDone=Concluído StatusActionInProcess=Em andamento TasksHistoryForThisContact=Eventos para esse contato -LastProspectDoNotContact=Não contactar LastProspectNeverContacted=Nunca contactado -LastProspectToContact=A contactar LastProspectContactInProcess=Contato em andamento LastProspectContactDone=Contato feito ActionAffectedTo=Evento atribuído para @@ -55,16 +47,12 @@ ActionAC_RDV=Reuniões ActionAC_INT=Intervenção no lugar ActionAC_FAC=Enviar fatura de cliente por correio ActionAC_REL=Enviar fatura de cliente por correio (lembrete) -ActionAC_CLO=Fechar ActionAC_EMAILING=Enviar emails massivos ActionAC_COM=Enviar pedido de cliente por correio ActionAC_SHIP=Enviar frete por correio ActionAC_SUP_ORD=Enviar pedido de fornecedor por correio ActionAC_SUP_INV=Enviar fatura de fornecedor por correio ActionAC_OTH=Outros -ActionAC_OTH_AUTO=Outros (eventos inseridos automaticamente) -ActionAC_MANUAL=Eventos inseridos manualmente -ActionAC_AUTO=Eventos inseridos automaticamente Stats=Estatísticas de vendas StatusProsp=Status de prospecto de cliente DraftPropals=Minutas de orçamentos diff --git a/htdocs/langs/pt_BR/companies.lang b/htdocs/langs/pt_BR/companies.lang index b7cf0f46d00a28ab3b4f8f5aa763bc6ec73c7ea7..a52d84b97f3679aed94d29329d6ae200044f165d 100644 --- a/htdocs/langs/pt_BR/companies.lang +++ b/htdocs/langs/pt_BR/companies.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - companies ErrorCompanyNameAlreadyExists=Já existe uma empresa com o nome %s. Escolha um outro. ErrorSetACountryFirst=Defina o país primeiro -SelectThirdParty=Selecione um terceiro ConfirmDeleteCompany=Você tem certeza que deseja excluir esta empresa e toda a informação associada? DeleteContact=Excluir um contato/endereço ConfirmDeleteContact=Você tem certeza que deseja excluir este contato e toda a informação associada? @@ -22,21 +21,13 @@ IdContact=ID do contato Contacts=Contatos/Endereços ThirdPartyContacts=Contato de terceiros ThirdPartyContact=Contato/endereço de terceiro -Company=Empresa -CompanyName=Razão social AliasNames=Nome de fantasia (nome comercial, marca registrada etc.) AliasNameShort=Nome de fantasia -Companies=Empresas CountryIsInEEC=O país integra a Comunidade Econômica Europeia ThirdPartyName=Nome do terceiro -ThirdParty=Terceiro -ThirdParties=Terceiros ThirdPartyProspects=Prospectos de cliente ThirdPartyProspectsStats=Prospectos de cliente -ThirdPartyCustomers=Clientes -ThirdPartyCustomersStats=Clientes ThirdPartyCustomersWithIdProf12=Clientes com %s ou %s -ThirdPartySuppliers=Fornecedores ThirdPartyType=Tipo de terceiro Company/Fundation=Pessoa jurídica Individual=Pessoa física @@ -50,50 +41,37 @@ RegisteredOffice=Escritório registrado Lastname=Sobrenome Firstname=Primeiro nome PostOrFunction=Cargo -UserTitle=Título Address=Endereço State=Estado/Província StateShort=Status do Cadastro -Region=Região -Country=País CountryCode=Código do país CountryId=ID do país -Phone=Telefone PhoneShort=Telefone -Skype=Skype Call=Chamar -Chat=Chat PhonePro=Tel. comercial PhonePerso=Tel. particular PhoneMobile=Celular No_Email=Recusar e-mails em massa -Fax=Fax Zip=CEP Town=Município Web=Website -Poste= Posição DefaultLang=Idioma ordinário VATIsUsed=Sujeito a ICMS VATIsNotUsed=Não sujeito a ICMS CopyAddressFromSoc=Preencher o endereço com os dados do terceiro ThirdpartyNotCustomerNotSupplierSoNoRef=Terceiro sem ser cliente ou fornecedor, nenhum objeto de referência disponível -##### Local Taxes ##### LocalTax1IsUsed=Utilizar segundo imposto -LocalTax1IsUsedES= É usado RE -LocalTax1IsNotUsedES= Não é usado RE +LocalTax1IsUsedES=É usado RE +LocalTax1IsNotUsedES=Não é usado RE LocalTax2IsUsed=Utilizar terceiro imposto -LocalTax2IsUsedES= É usado IRPF -LocalTax2IsNotUsedES= Não é usado IRPF -LocalTax1ES=RE -LocalTax2ES=IRPF +LocalTax2IsUsedES=É usado IRPF +LocalTax2IsNotUsedES=Não é usado IRPF TypeLocaltax1ES=RE Tipo TypeLocaltax2ES=IRPF Tipo WrongCustomerCode=Código de cliente inválido WrongSupplierCode=Código de fornecedor inválido CustomerCodeModel=Modelo de código de cliente SupplierCodeModel=Modelo de código de fornecedor -Gencod=Código de barras -##### Professional ID ##### ProfId1Short=ID prof. 1 ProfId2Short=ID prof. 2 ProfId3Short=ID prof. 3 @@ -106,145 +84,29 @@ ProfId3=ID profissional 3 ProfId4=ID profissional 4 ProfId5=ID profissional 5 ProfId6=ID profissional 6 -ProfId1AR=Prof Id 1 (CUIT/CUIL) -ProfId2AR=Prof Id 2 (Revenu brutes) -ProfId3AR=- -ProfId4AR=- -ProfId5AR=- -ProfId6AR=- ProfId1AT=Prof Id 1 (ICMS) ProfId2AT=Prof Id 2 (Inscrição Estadual) ProfId3AT=Prof Id 3 (Inscrição Municipal) -ProfId4AT=- -ProfId5AT=- -ProfId6AT=- -ProfId1AU=Prof Id 1 (ABN) -ProfId2AU=- -ProfId3AU=- -ProfId4AU=- -ProfId5AU=- -ProfId6AU=- ProfId1BE=Prof Id 1 (Número profissional) -ProfId2BE=- -ProfId3BE=- -ProfId4BE=- -ProfId5BE=- -ProfId6BE=- -ProfId1BR=- ProfId2BR=IE (Inscrição Estadual) ProfId3BR=IM (Inscrição Municipal) ProfId4BR=CNPJ/CPF -#ProfId5BR=CNAE -#ProfId6BR=INSS -ProfId1CH=- -ProfId2CH=- ProfId3CH=Prof Id 1 (Número federal) ProfId4CH=Prof Id 2 (Número gravado comercial) -ProfId5CH=- -ProfId6CH=- -ProfId1CL=Prof Id 1 (R.U.T.) -ProfId2CL=- -ProfId3CL=- -ProfId4CL=- -ProfId5CL=- -ProfId6CL=- -ProfId1CO=Prof Id 1 (R.U.T.) -ProfId2CO=- -ProfId3CO=- -ProfId4CO=- -ProfId5CO=- -ProfId6CO=- -ProfId1DE=Prof Id 1 (USt.-IdNr) -ProfId2DE=Prof Id 2 (USt.-Nr) -ProfId3DE=Prof Id 3 (Handelsregister-Nr.) -ProfId4DE=- -ProfId5DE=- -ProfId6DE=- -ProfId1ES=Prof Id 1 (CIF/NIF) ProfId2ES=Prof Id 2 (Número de seguro social) -ProfId3ES=Prof Id 3 (CNAE) ProfId4ES=Prof Id 4 (Número do colegial) -ProfId5ES=- -ProfId6ES=- -ProfId1FR=SIREN -ProfId2FR=SIRET -ProfId3FR=NAF (Ex APE) -ProfId4FR=RCS/RM -ProfId5FR=- -ProfId6FR=- ProfId1GB=Número do registro -ProfId2GB=- -ProfId3GB=SIC -ProfId4GB=- -ProfId5GB=- -ProfId6GB=- -ProfId1HN=Id prof. 1 (RTN) -ProfId2HN=- -ProfId3HN=- -ProfId4HN=- -ProfId5HN=- -ProfId6HN=- -ProfId1IN=Prof Id 1 (TIN) -ProfId2IN=Prof Id 2 (PAN) -ProfId3IN=Prof Id 3 (SRVC TAX) ProfId4IN=ID prof. 4 ProfId5IN=ID prof. 5 -ProfId6IN=- ProfId1LU=Id. prof. 1 (R.C.S. Luxemburgo) ProfId2LU=Id. prof. 2 (Permissão para negócios) -ProfId3LU=- -ProfId4LU=- -ProfId5LU=- -ProfId6LU=- -ProfId1MA=Id prof. 1 (R.C.) -ProfId2MA=Id prof. 2 (Patente) -ProfId3MA=Id prof. 3 (I.F.) -ProfId4MA=Id prof. 4 (C.N.S.S.) ProfId5MA=ID prof. 5 (C.I.C.E.) -ProfId6MA=- -ProfId1MX=Prof Id 1 (R.F.C). -ProfId2MX=Prof Id 2 (R..P. IMSS) -ProfId3MX=Prof Id 3 (Profesional Charter) -ProfId4MX=- -ProfId5MX=- -ProfId6MX=- -ProfId1NL=KVK nummer -ProfId2NL=- -ProfId3NL=- -ProfId4NL=Burgerservicenummer (BSN) -ProfId5NL=- -ProfId6NL=- -ProfId1PT=NIPC -ProfId2PT=Núm. Segurança Social -ProfId3PT=Num. Reg. Comercial -ProfId4PT=Conservatória -ProfId5PT=- -ProfId6PT=- -ProfId1SN=RC -ProfId2SN=NINEA -ProfId3SN=- -ProfId4SN=- -ProfId5SN=- -ProfId6SN=- -ProfId1TN=RC -ProfId2TN=Matrícula Fiscal -ProfId3TN=Código na Alfandega -ProfId4TN=CCC -ProfId5TN=- -ProfId6TN=- -ProfId1RU=Prof Id 1 (OGRN) -ProfId2RU=Prof Id 2 (INN) -ProfId3RU=Prof Id 3 (KPP) -ProfId4RU=Prof Id 4 (OKPO) -ProfId5RU=- -ProfId6RU=- VATIntra=Número ICMS VATIntraShort=Núm ICMS VATIntraSyntaxIsValid=Sintaxe é válida ProspectCustomer=Possível cliente / Cliente Prospect=Prospecto de cliente CustomerCard=Ficha do cliente -Customer=Cliente CustomerRelativeDiscount=Desconto relativo do cliente CustomerRelativeDiscountShort=Desconto relativo CustomerAbsoluteDiscountShort=Desconto fixo @@ -256,7 +118,6 @@ CompanyHasNoAbsoluteDiscount=Esse cliente não tem desconto de crédito disponí CustomerAbsoluteDiscountAllUsers=Desconto fixo (concedido para todos usuários) CustomerAbsoluteDiscountMy=Desconto fixo (concedido para seu usuário) DiscountNone=Nenhum -Supplier=Fornecedor AddContact=Adicionar contato AddContactAddress=Adicionar contato/endereço EditContact=Editar contato @@ -271,7 +132,6 @@ DefaultContact=Contato/endereço padrão AddThirdParty=Adicionar terceiro DeleteACompany=Excluir empresa PersonalInformations=Dados pessoais -AccountancyCode=Código contábil CustomerCode=Código de cliente SupplierCode=Código de fornecedor CustomerCodeShort=Código de cliente @@ -287,9 +147,7 @@ CompanyDeleted=A empresa "%s" foi excluída do banco de dados. ListOfContacts=Lista de contatos/endereços ListOfContactsAddresses=Lista de Contatos/Endereços ListOfThirdParties=Lista de terceiros -ShowCompany=Exibir terceiro ShowContact=Mostrar contato -ContactsAllShort=Todos (sem filtro) ContactType=Tipo de contato ContactForOrders=Contato de pedidos ContactForOrdersOrShipments=Contato do pedido ou da remessa @@ -304,13 +162,10 @@ NoContactForAnyInvoice=Esse contato não é de nenhuma fatura NewContact=Novo contato NewContactAddress=Novo contato/endereço MyContacts=Meus contatos -Capital=Capital CapitalOf=Capital de %s EditCompany=Editar empresa ThisUserIsNot=Esse usuário não é um possível cliente, cliente ou fornecedor -VATIntraCheck=Verificar VATIntraCheckDesc=Esse link <b>%s</b> permite perguntar ao serviço de verificação da VAT europeia. Acesso externo a internet é necessário para o serviço. -VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do VATIntraCheckableOnEUSite=Verificar taxa VAT no site da comissão europeia VATIntraManualCheck=Você pode também verificar manualmente no site europeu <a href="%s" target="_blank">%s</a> ErrorVATCheckMS_UNAVAILABLE=Verificação não é possível. Verifique o serviço não é necessário por um membro de estado (%s). @@ -319,19 +174,13 @@ JuridicalStatus=Natureza jurídica Staff=Número de funcionários ProspectLevelShort=Pos. Cli. ProspectLevel=Possível cliente -ContactPrivate=Privado ContactPublic=Compartilhado ContactVisibility=Visível ContactOthers=Outro OthersNotLinkedToThirdParty=Outros, não esta vinculado a terceiros ProspectStatus=Status de possível cliente -PL_NONE=Nenhum PL_UNKNOWN=Desconhecido -PL_LOW=Baixo PL_MEDIUM=Médio -PL_HIGH=Alto -TE_UNKNOWN=- -TE_STARTUP=Startup TE_GROUP=Empresa de grande porte TE_MEDIUM=Empresa de médio porte TE_ADMIN=Governo @@ -339,7 +188,6 @@ TE_SMALL=Empresa de pequeno porte TE_RETAIL=Revendedor/Varejista TE_WHOLE=Atacadista TE_PRIVATE=Autônomo -TE_OTHER=Outro StatusProspect-1=Não contactar StatusProspect0=Nunca contactado StatusProspect1=A contactar @@ -351,10 +199,7 @@ ChangeToContact=Alterar status para 'A contactar' ChangeContactInProcess=Trocar status para 'Contato em andamento' ChangeContactDone=Trocar status para 'Contato feito' ProspectsByStatus=Prospectos por status -NoParentCompany=Nenhuma -ExportCardToFormat=Exportar ficha para o formato ContactNotLinkedToCompany=Contato não esta vinculado a nenhum terceiro -DolibarrLogin=Dolibarr login NoDolibarrAccess=Sem acesso ao Dolibarr ExportDataset_company_1=Terceiros (Empresas / Fundações / Pessoas físicas) e propriedades ExportDataset_company_2=Contatos e propriedades @@ -375,9 +220,7 @@ FiscalYearInformation=Informações do ano fiscal FiscalMonthStart=Primeiro mês do ano fiscal YouMustAssignUserMailFirst=Você deve criar um e-mail para este usuário para poder adicionar as notificações por e-mail para ele. YouMustCreateContactFirst=Para estar apto a adicionar notificações por e-mail, você deve primeiramente definir contatos com e-mails válidos para o terceiro -ListSuppliersShort=Lista de fornecedores ListProspectsShort=Lista de prospectos de cliente -ListCustomersShort=Lista de clientes ThirdPartiesArea=Área de terceiros LastModifiedThirdParties=Últimos %s terceiros modificados UniqueThirdParties=Total de terceiros diff --git a/htdocs/langs/pt_BR/compta.lang b/htdocs/langs/pt_BR/compta.lang index 3135a13cad0f4e265700c19d9499b65076894aba..eae84df5baac1d87a8791c1d3f3e10d1e6867de5 100644 --- a/htdocs/langs/pt_BR/compta.lang +++ b/htdocs/langs/pt_BR/compta.lang @@ -4,7 +4,6 @@ TaxModuleSetupToModifyRules=Vá para <a href="%s">configuração do módulo Impo TaxModuleSetupToModifyRulesLT=Vá até <a href="%s">Configuração >> Empresa</a> para modificar as regras de cálculo OptionMode=Opção de Administração Contabilidade OptionModeTrue=Opção Rendimentos-Despesas -OptionModeVirtual=Opção Créditos/Dividas OptionModeTrueDesc=Neste método, o balanço calcula-se sobre a base das faturas pagas.\nA validade dos valores não está garantida pois a Administração da Contabilidade pasa rigurosamente pelas entradas/saidas das contas mediante as faturas.\nNota : Nesta Versão, Dolibarr utiliza a data da fatura ao estado ' Validada ' e não a data do estado ' paga '. OptionModeVirtualDesc=neste método, o balanço se calcula sobre a base das faturas validadas. pagas o não, aparecen ao resultado em quanto sejam discolocaçãos. FeatureIsSupportedInInOutModeOnly=função disponível somente ao modo contas CREDITOS-dividas (Véase a configuração do módulo contas) @@ -12,22 +11,16 @@ VATReportBuildWithOptionDefinedInModule=Os valores aqui apresentados são calcul LTReportBuildWithOptionDefinedInModule=Valores mostrados aqui são calculados usando as regras definidas nas configurações da empresa. Param=Configuração RemainingAmountPayment=Pagamento montante remanescente: -Account=Conta Accountparent=Conta pai Accountsparent=Contas pai Income=Rendimentos -Outcome=Despesas ReportInOut=Rendimentos/Despesas ReportTurnover=Faturamento PaymentsNotLinkedToInvoice=pagamentos vinculados a Nenhuma fatura, por o que nenhum Fornecedor PaymentsNotLinkedToUser=pagamentos não vinculados a um usuário Profit=Lucro AccountingResult=Resultado contábil -Balance=Saldo -Debit=Débito -Credit=Crédito Piece=Doc. contábil -AmountHTVATRealReceived=Total Recebido AmountHTVATRealPaid=líquido pago VATToPay=ICMS a pagar VATReceived=ICMS recebido @@ -44,7 +37,6 @@ LT1CustomerES=RE vendas LT1SupplierES=RE compras VATCollected=ICMS recuperado ToPay=A pagar -SpecialExpensesArea=Área para todos os pagamentos especiais SocialContribution=Contribuição fiscal ou social SocialContributions=Encargos sociais e fiscais SocialContributionsDeductibles=Contribuições fiscais ou sociais dedutíveis @@ -52,19 +44,13 @@ SocialContributionsNondeductibles=Contribuições fiscais ou sociais não dedut LabelContrib=Rótulo da contribuição TypeContrib=Tipo de contribuição MenuSpecialExpenses=Despesas especiais -MenuTaxAndDividends=Impostos e Dividas MenuSocialContributions=Contribuições fiscais/sociais -MenuNewSocialContribution=New social/fiscal tax NewSocialContribution=Nova contribuição fiscal/social ContributionsToPay=Encargos sociais / fiscais para pagar -AccountancyTreasuryArea=Área Contabilidade/Tesouraria NewPayment=Novo pagamento -Payments=Pagamentos PaymentCustomerInvoice=Pagamento de fatura de cliente PaymentSocialContribution=Pagamento de imposto social / fiscal PaymentVat=Pagamento de ICMS -ListPayment=Lista de pagamentos -ListOfCustomerPayments=Lista de pagamentos de clientes DateStartPeriod=Período de início e data DateEndPeriod=Período e data final newLT1Payment=Novo pagamento da taxa 2 @@ -91,7 +77,6 @@ SupplierAccountancyCode=Código contábil do fornecedor CustomerAccountancyCodeShort=Cod. cont. cli. SupplierAccountancyCodeShort=Cod. cont. forn. AccountNumber=Número da conta -NewAccountingAccount=Nova conta SalesTurnover=Faturamento de vendas SalesTurnoverMinimum=Volume de negócios mínimo de vendas ByExpenseIncome=Por despesas & receitas @@ -102,9 +87,7 @@ CheckReceiptShort=Depósito de cheque LastCheckReceiptShort=Últimos %s recibos de cheque NewCheckReceipt=Novo desconto NewCheckDeposit=Novo depósito de cheque -NewCheckDepositOn=Criar Novo deposito na conta: %s NoWaitingChecks=Sem cheques a depositar. -DateChequeReceived=Data introdução de dados de recepção cheque NbOfCheques=Nº de cheques PaySocialContribution=Quitar um encargo fiscal/social ConfirmPaySocialContribution=Quer mesmo categorizar esta contribuição fiscal/social como paga? @@ -115,12 +98,12 @@ CalcModeVATDebt=<b>Modo% S VAT compromisso da contabilidade% s.</b> CalcModeVATEngagement=<b>Modo% SVAT sobre os rendimentos e as despesas% s.</b> CalcModeDebt=Modo <b>% s declarações de dívidas% s </ b> diz <b> Compromisso da contabilidade </ b>. CalcModeEngagement=Modo <b>% s rendimentos e as despesas% s </ b> contabilidade do caixa <b> </ b>> -CalcModeLT1= Modo <b>%sRE nas faturas dos clientes - faturas dos fornecedores%s</b> +CalcModeLT1=Modo <b>%sRE nas faturas dos clientes - faturas dos fornecedores%s</b> CalcModeLT1Debt=Modo <b>%sRE nas faturas dos clientes%s</b> -CalcModeLT1Rec= Modo <b>%sRE nas faturas dos fornecedores%s</b> -CalcModeLT2= Modo <b>%sIRPF nas faturas de clientes - fornecedores%s</b> +CalcModeLT1Rec=Modo <b>%sRE nas faturas dos fornecedores%s</b> +CalcModeLT2=Modo <b>%sIRPF nas faturas de clientes - fornecedores%s</b> CalcModeLT2Debt=Modo <b>%sIRPF nas faturas de clientes%s</b> -CalcModeLT2Rec= Modo <b>%sIRPF nas faturas de fornecedores%s</b> +CalcModeLT2Rec=Modo <b>%sIRPF nas faturas de fornecedores%s</b> AnnualSummaryDueDebtMode=Balanço de receitas e despesas, resumo anual AnnualSummaryInputOutputMode=Balanço de receitas e despesas, resumo anual AnnualByCompaniesDueDebtMode=balanço de depositos e despesas, desglosado por Fornecedores, em modo <b>%sCréditos-dividas%s</b> chamada <b>Contabilidade de compromisso</b>. @@ -145,7 +128,6 @@ LT2ReportByQuartersInInputOutputMode=Relatoriopor rata IRPF VATReportByQuartersInDueDebtMode=Relatório da taxa do IVA cobrado e pago LT1ReportByQuartersInDueDebtMode=Relatorio por rata RE LT2ReportByQuartersInDueDebtMode=Relatorio por rata IRPF -SeeVATReportInInputOutputMode=Ver o Relatório <b>%sIVA pago%s</b> para um modo de cálculo Standard SeeVATReportInDueDebtMode=Ver o Relatório <b>%sIVA a dever%s</b> para um modo de cálculo com a opção sobre a divida RulesVATInServices=- No caso dos serviços, o relatório inclui os regulamentos IVA efetivamente recebidas ou emitidas com base na data de pagamento. RulesVATInProducts=- Para os bens materiais, que inclui as notas fiscais de IVA com base na data da fatura. @@ -156,16 +138,11 @@ PercentOfInvoice=%%/fatura NotUsedForGoods=Bens não utilizados ProposalStats=As estatísticas sobre as propostas OrderStats=Estatísticas de comandos -InvoiceStats=Estatísticas sobre as contas -Dispatch=Repartição -Dispatched=Repartições -ToDispatch=A Repartir ThirdPartyMustBeEditAsCustomer=Fornecedor deve ser definido como um cliente SellsJournal=Diário de Vendas PurchasesJournal=Diário de Compras DescSellsJournal=Diário de Vendas DescPurchasesJournal=Diário de Compras -InvoiceRef=Ref. Fatura CodeNotDef=Não Definida WarningDepositsNotIncluded=Depósitos faturas não estão incluídos nesta versão com este módulo de contabilidade. DatePaymentTermCantBeLowerThanObjectDate=Data Prazo de pagamento não pode ser inferior a data da compra ou aquisição @@ -173,12 +150,9 @@ Pcg_version=Modelos de carta de contas Pcg_type=Tipo Pcg Pcg_subtype=PCG subtipo InvoiceLinesToDispatch=Linhas de nota fiscal para envio -ByProductsAndServices=Por produtos e serviços RefExt=Ref externo ToCreateAPredefinedInvoice=Para criar um tema para fatura, crie uma fatura padrão e então, sem validá-la, clique no botão "%s". LinkedOrder=Linque para o pedido -Mode1=Método 1 -Mode2=Método 2 CalculationRuleDesc=Para calcular o total do VAT, há dois métodos: <br> Método 1 é arredondamento cuba em cada linha, em seguida, soma-los. <br> Método 2 é somando tudo cuba em cada linha, em seguida, o arredondamento resultado. <br> Resultado final pode difere de alguns centavos. O modo padrão é o <b>modo% s.</b> CalculationRuleDescSupplier=De acordo com o fornecedor, escolher o método adequado aplicar mesma regra de cálculo e obter mesmo resultado esperado pelo seu fornecedor. TurnoverPerProductInCommitmentAccountingNotRelevant=Relatório Volume de negócios por produto, quando se usa um modo de <b>contabilidade de caixa</b> não é relevante. Este relatório está disponível somente quando utilizar o modo de <b>contabilidade engajamento</b> (ver configuração do módulo de contabilidade). @@ -192,7 +166,6 @@ ACCOUNTING_ACCOUNT_SUPPLIER=Conta da contabilidade padrão para fornecedores ter CloneTax=Clonar uma taxa social / fiscal ConfirmCloneTax=Confirme o clone de um pagamento de taxa social / fiscal CloneTaxForNextMonth=Clonar para o proximo mes -SimpleReport=Relatório simples AddExtraReport=Relatórios extra OtherCountriesCustomersReport=Relação de clientes estrangeiros BasedOnTwoFirstLettersOfVATNumberBeingDifferentFromYourCompanyCountry=Com base nas duas primeiras letras do número de IVA sendo diferente do código de país da sua própria empresa @@ -202,4 +175,3 @@ LinkedFichinter=Vincular a uma intervenção ImportDataset_tax_contrib=Importar contribuições fiscais/sociais ImportDataset_tax_vat=Importar valores pagos de ICMS ErrorBankAccountNotFound=Erro: conta bancária não encontrada -FiscalPeriod=Período de contabilidade diff --git a/htdocs/langs/pt_BR/contracts.lang b/htdocs/langs/pt_BR/contracts.lang index 3b1f8e9bad48ad85ad28821933692225700781f0..3ab455d7835f7fa21e311d0af43076405e405250 100644 --- a/htdocs/langs/pt_BR/contracts.lang +++ b/htdocs/langs/pt_BR/contracts.lang @@ -4,9 +4,6 @@ ListOfContracts=Lista de contratos AllContracts=Todos os contratos ContractCard=Ficha do contrato ContractStatusNotRunning=Fora de vigência -ContractStatusDraft=Rascunho -ContractStatusValidated=Validado -ContractStatusClosed=Encerrado ServiceStatusInitial=Fora de vigência ServiceStatusRunning=Em vigência ServiceStatusNotLate=Em vigência, não vencido @@ -17,12 +14,9 @@ ServiceStatusClosed=Encerrado ShowContractOfService=Mostrar contrato de serviço Contracts=Contratos ContractsSubscriptions=Contratos -ContractsAndLine=Contratos e linha de contratos -Contract=Contrato ContractLine=Linha contrato Closing=Fechando NoContracts=Sem contratos -MenuServices=Serviços MenuInactiveServices=Serviços inativos MenuRunningServices=Serviços em vigência MenuExpiredServices=Serviços vencidos @@ -36,17 +30,13 @@ ConfirmDeleteAContract=Você tem certeza que deseja excluir este contrato e todo ConfirmValidateContract=Você tem certeza que deseja validar este contrato sob o mesmo nome <b>%s</b>? ConfirmCloseContract=Isto fechará todos os serviços (ativos ou não). Você tem certeza que deseja fechar este contrato? ConfirmCloseService=Você tem certeza que deseja fechar este serviço com a data <b>%s</b>? -ValidateAContract=Confirmar um contrato ActivateService=Ativar o serviço ConfirmActivateService=Você tem certeza que deseja ativar este serviço com a data <b>%s</b>? RefContract=Referencia contrato DateContract=Data do contrato DateServiceActivate=Data de ativação do serviço -ShowContract=Mostrar contrato -ListOfServices=Lista de serviços ListOfInactiveServices=Lista servicos inativos ListOfExpiredServices=Lista servicos ativos vencidos -ListOfClosedServices=Lista de serviços fechados ListOfRunningServices=Lista de Serviços Ativos NotActivatedServices=Serviços Desativados (Com os Contratos Validados) BoardNotActivatedServices=Serviços a Ativar (Com os Contratos Validados) @@ -71,10 +61,7 @@ CloseAllContracts=Fechar Todos os Contratos DeleteContractLine=Eliminar a linha do contrato ConfirmDeleteContractLine=Você tem certeza que deseja excluir esta linha do contrato? MoveToAnotherContract=Mover o serviço a outro contrato deste Fornecedor. -ConfirmMoveToAnotherContract=Escolhi o contrato e confirmo o alterar de serviço ao presente contrato. ConfirmMoveToAnotherContractQuestion=Escolher para qual contrato existente (do mesmo terceiro) você deseja mover este serviço. -PaymentRenewContractId=Renovação do Serviço (Numero %s) -ExpiredSince=Expirado desde NoExpiredServices=Nao tem servicos ativos vencidos ListOfServicesToExpireWithDuration=Lista de servicos a vencer em %s dias ListOfServicesToExpireWithDurationNeg=Lista de serviços expirados a mais de %s dias @@ -83,10 +70,6 @@ NoteListOfYourExpiredServices=Esta lista contém apenas contratos de serviços d StandardContractsTemplate=Modelo de contratos simples ContactNameAndSignature=Para %s, nome e assinatura: OnlyLinesWithTypeServiceAreUsed=Somente as linhas com o tipo de "serviço" será clonado. - -##### Types de contacts ##### -TypeContact_contrat_internal_SALESREPSIGN=Comercial assinante do contrato -TypeContact_contrat_internal_SALESREPFOLL=Comercial seguimento do contrato TypeContact_contrat_external_BILLING=Contato cliente de faturação do contrato TypeContact_contrat_external_CUSTOMER=Contato cliente seguimento do contrato TypeContact_contrat_external_SALESREPSIGN=Contato cliente assinante do contrato diff --git a/htdocs/langs/pt_BR/cron.lang b/htdocs/langs/pt_BR/cron.lang index b8e56f1243ee45247e666a7797b488f7fddc8c6c..a8abd749dbd1419c5f21447ccdfa04c6bc9841ad 100644 --- a/htdocs/langs/pt_BR/cron.lang +++ b/htdocs/langs/pt_BR/cron.lang @@ -1,12 +1,9 @@ # Dolibarr language file - Source file is en_US - cron -# About page -# Right -Permission23101 = Leia trabalho Programado -Permission23102 = Criar / atualização de tarefa agendada -Permission23103 = Excluir trabalho agendado -Permission23104 = Executar trabalho agendado -# Admin -CronSetup= Configuração do gerenciamento de trabalho agendado +Permission23101 =Leia trabalho Programado +Permission23102 =Criar / atualização de tarefa agendada +Permission23103 =Excluir trabalho agendado +Permission23104 =Executar trabalho agendado +CronSetup=Configuração do gerenciamento de trabalho agendado URLToLaunchCronJobs=URL para verificar e iniciar os cron jobs qualificados OrToLaunchASpecificJob=Ou checkar e iniciar um specifico trabalho KeyForCronAccess=Chave seguranca para URL que lanca tarefas cron @@ -14,19 +11,15 @@ FileToLaunchCronJobs=Linha de comando para iniciar tarefas agendadas CronExplainHowToRunUnix=No ambiente Unix você deve usar a seguinte entrada crontab para executar a linha de comando a cada 5 minutos CronExplainHowToRunWin=Em ambiente Microsoft (tm) Windows, Você PODE USAR Ferramentas de Tarefa agendada Para executar a Linha de Comando de Cada 5 Minutos CronMethodDoesNotExists=A classe %s não contém método %s algum -# Menu EnabledAndDisabled=Ativado e desativado -# Page list CronLastOutput=Saída do último acionamento CronLastResult=Código do último resultado -CronCommand=Comando CronList=As tarefas agendadas CronDelete=Excluir tarefas agendadas CronConfirmDelete=Você tem certeza que deseja excluir esses cron jobs agendados? CronExecute=Lançar Tarefas agendadas CronConfirmExecute=Você tem certeza que deseja executar agora estas tarefas agendadas? CronInfo=Módulo de tarefas agendadas permitem executar trabalho que foram planejadas -CronTask=Tarefa CronNone=Nenhum CronDtStart=Não antes CronDtEnd=Não depois @@ -35,28 +28,21 @@ CronDtLastLaunch=Data de início da última execução CronDtLastResult=Data final da última execução CronFrequency=Frequência CronClass=Classe -CronMethod=Método -CronModule=Módulo CronNoJobs=Nenhuma tarefa registrada -CronPriority=Prioridade CronLabel=Etiqueta CronNbRun=Nr. execuçao CronMaxRun=Max nr. execução CronEach=Cada JobFinished=Trabalho iniciado e terminado -#Page card -CronAdd= Adicionar tarefa +CronAdd=Adicionar tarefa CronEvery=Executar cada tarefa CronObject=Instância/Objeto a se criar -CronArgs=Parâmetros CronSaveSucess=Salvo com sucesso -CronNote=Comentário CronFieldMandatory=O campo %s é obrigatório CronErrEndDateStartDt=A data final não pode ser anterior a data de início CronStatusActiveBtn=Ativar CronStatusInactiveBtn=Desativar CronTaskInactive=Está tarefa está desativada -CronId=Id CronClassFile=Classes (nomedoarquivo.class.php) CronModuleHelp=Nome do diretório do módulo Dolibarr (também trabalha com módulo Dolibarr externo). Por exemplo para buscar método do objeto Dolibarr Product /htdocs/<u>produto</u>/class/product.class.php, o valor do módulo é o <i>produto</i> CronClassFileHelp=O nome do arquivo a ser carregado.<BR>Por exemplo para buscar método do objeto Dolibarr Product /htdocs/produtos/classe/<u>product.class.php</u>, o valor do nome do arquivo de classe é <i>product.class.php</i> @@ -65,9 +51,6 @@ CronMethodHelp=O método de objeto para o lançamento. Por exemplo para buscar m CronArgsHelp=Os argumentos do método. Por exemplo para buscar método do objeto Product do Dolibarr /htdocs/produto/class/product.class.php, o valor de paramtetros pode ser <i>0, ProductRef</i> CronCommandHelp=A linha de comando de sistema que deve ser executada. CronCreateJob=Criar uma nova Tarefa agendada -CronFrom=De -# Info -# Common CronType=Tipo de tarefa CronType_method=Chamar metodo da classe Dolibarr CronType_command=Comando Shell diff --git a/htdocs/langs/pt_BR/deliveries.lang b/htdocs/langs/pt_BR/deliveries.lang index b328d7932e8b99a7df8966d35804cdc580fe2f4e..9c0b9bc02ebe81a3d03c295ba72e32e324d6923f 100644 --- a/htdocs/langs/pt_BR/deliveries.lang +++ b/htdocs/langs/pt_BR/deliveries.lang @@ -6,25 +6,16 @@ DeliveryOrder=Ordem de entrega DeliveryDate=Data da entrega CreateDeliveryOrder=Gerar ordem de entrega DeliveryStateSaved=Estado de entrega salvo -SetDeliveryDate=Indicar a Data de Envio -ValidateDeliveryReceipt=Confirmar a Nota de Entrega ValidateDeliveryReceiptConfirm=Você tem certeza que deseja validar este comprovante de entrega? DeleteDeliveryReceipt=Excluir recibo de entrega DeleteDeliveryReceiptConfirm=Você tem certeza que deseja excluir o comprovante de entrega <b>%s</b>? DeliveryMethod=Método de entrega TrackingNumber=Número de rastreamento -DeliveryNotValidated=Entrega não validada StatusDeliveryCanceled=Cancelada StatusDeliveryDraft=Rascunho StatusDeliveryValidated=Recebida -# merou PDF model -NameAndSignature=Nome e assinatura: -ToAndDate=Em___________________________________ a ____/_____/__________ GoodStatusDeclaration=Recebi a mercadorias acima em bom estado, -Deliverer=Destinatário: Sender=Remetente -Recipient=Destinatário -ErrorStockIsNotEnough=Não existe estoque suficiente Shippable=Disponivel para envio NonShippable=Não disponivel para envio ShowReceiving=Mostrar recibo de entrega diff --git a/htdocs/langs/pt_BR/dict.lang b/htdocs/langs/pt_BR/dict.lang index dce305a12c77a359c046fbe2fde7daffe6087f77..b82198fbf97c4a6231451594d59c3fc2fbfad8ab 100644 --- a/htdocs/langs/pt_BR/dict.lang +++ b/htdocs/langs/pt_BR/dict.lang @@ -1,276 +1,67 @@ # Dolibarr language file - Source file is en_US - dict -CountryFR=França CountryBE=Bélgica CountryIT=Itália -CountryES=Espanha -CountryDE=Alemanha CountryCH=Suíça -CountryGB=Grã-Bretanha -CountryUK=Reino Unido -CountryIE=Irlanda -CountryCN=China -CountryTN=Tunísia -CountryUS=Estados Unidos -CountryMA=Marrocos CountryDZ=Argélia CountryCA=Canadá -CountryTG=Togo -CountryGA=Gabão -CountryNL=Holanda -CountryHU=Hungria CountryRU=Rússia -CountrySE=Suécia -CountryCI=Costa do Marfim -CountrySN=Senegal -CountryAR=Argentina -CountryCM=Camarões -CountryPT=Portugal -CountrySA=Arábia Saudita -CountryMC=Mônaco -CountryAU=Austrália -CountrySG=Singapura -CountryAF=Afeganistão CountryAX=Ilhas Åland -CountryAL=Albânia -CountryAS=Samoa Americana -CountryAD=Andorra -CountryAO=Angola -CountryAI=Anguilla -CountryAQ=Antártica -CountryAG=Antígua e Barbuda -CountryAM=Armênia -CountryAW=Aruba -CountryAT=Áustria -CountryAZ=Azerbaijão -CountryBS=Bahamas -CountryBH=Barém -CountryBD=Bangladesh -CountryBB=Barbados -CountryBY=Bielorrússia -CountryBZ=Belize CountryBJ=Benim -CountryBM=Bermudas -CountryBT=Butão -CountryBO=Bolívia -CountryBA=Bósnia e Herzegovina -CountryBW=Botsuana -CountryBV=Ilha Bouvet -CountryBR=Brasil -CountryIO=Território Britânico do Oceano Índico CountryBN=Brunei CountryBG=Bulgária CountryBF=Burquina Faso CountryBI=Burúndi -CountryKH=Camboja -CountryCV=Cabo Verde -CountryKY=Ilhas Cayman CountryCF=República Centro-Africana -CountryTD=Chade -CountryCL=Chile -CountryCX=Ilha Christmas -CountryCC=Ilhas Cocos (Keeling) -CountryCO=Colômbia CountryKM=Comores -CountryCG=Congo -CountryCD=Congo, República Democrática do -CountryCK=Ilhas Cook -CountryCR=Costa Rica -CountryHR=Croácia -CountryCU=Cuba -CountryCY=Chipre CountryCZ=República Tcheca -CountryDK=Dinamarca -CountryDJ=Djibuti -CountryDM=Dominica -CountryDO=República Dominicana -CountryEC=Equador -CountryEG=Egito -CountrySV=El Salvador -CountryGQ=Guiné Equatorial -CountryER=Eritréia -CountryEE=Estônia -CountryET=Etiópia -CountryFK=Ilhas Malvinas CountryFO=Ilhas Féroe CountryFJ=República de Fíji -CountryFI=Finlândia -CountryGF=Guiana Francesa -CountryPF=Polinésia Francesa CountryTF=Território das Terras Austrais e Antárticas Francesas -CountryGM=Gâmbia CountryGE=Geórgia -CountryGH=Gana -CountryGI=Gibraltar -CountryGR=Grécia CountryGL=Groenlândia -CountryGD=Granada -CountryGP=Guadalupe -CountryGU=Guam -CountryGT=Guatemala -CountryGN=Guiné -CountryGW=Guiné-Bissau -CountryGY=Guiana CountryHT=Haiti CountryHM=Ilha Heard e Ilhas McDonald CountryVA=Santa Sé (Estado da Cidade do Vaticano) -CountryHN=Honduras -CountryHK=Hong Kong CountryIS=Islândia -CountryIN=Índia -CountryID=Indonésia CountryIR=Irã -CountryIQ=Iraque -CountryIL=Israel -CountryJM=Jamaica -CountryJP=Japão -CountryJO=Jordânia -CountryKZ=Cazaquistão -CountryKE=Quênia -CountryKI=Kiribati -CountryKP=Coreia do Norte CountryKR=Coreia do Sul -CountryKW=Kuwait CountryKG=Quirguistão CountryLA=Laos -CountryLV=Letônia -CountryLB=Líbano -CountryLS=Lesoto -CountryLR=Libéria -CountryLY=Líbia -CountryLI=Liechtenstein CountryLT=Lituânia -CountryLU=Luxemburgo -CountryMO=Macau CountryMK=Macedônia, antiga República iugoslava da -CountryMG=Madagascar CountryMW=Maláui -CountryMY=Malásia -CountryMV=Maldivas CountryML=Máli -CountryMT=Malta -CountryMH=Ilhas Marshall -CountryMQ=Martinica -CountryMR=Mauritânia -CountryMU=Maurício -CountryYT=Mayotte -CountryMX=México -CountryFM=Micronésia -CountryMD=Moldávia -CountryMN=Mongólia -CountryMS=Montserrat -CountryMZ=Moçambique CountryMM=Birmânia (Myanmar) -CountryNA=Namíbia -CountryNR=Nauru -CountryNP=Nepal -CountryAN=Antilhas Holandesas CountryNC=Nova Caledônia -CountryNZ=Nova Zelândia -CountryNI=Nicarágua -CountryNE=Níger -CountryNG=Nigéria -CountryNU=Niue -CountryNF=Ilha Norfolk -CountryMP=Ilhas Marianas do Norte -CountryNO=Noruega -CountryOM=Omã -CountryPK=Paquistão -CountryPW=Palau CountryPS=Território Palestino, Ocupado -CountryPA=Panamá CountryPG=Papua-Nova Guiné -CountryPY=Paraguai -CountryPE=Peru -CountryPH=Filipinas CountryPN=Ilhas Picárnia -CountryPL=Polônia -CountryPR=Porto Rico -CountryQA=Catar -CountryRE=Reunião -CountryRO=Romênia -CountryRW=Ruanda -CountrySH=Santa Helena CountryKN=São Cristóvão e Nevis -CountryLC=Santa Lúcia CountryPM=São Pedro e Miquelon -CountryVC=São Vicente e Granadinas -CountryWS=Samoa -CountrySM=San Marino -CountryST=São Tomé e Príncipe -CountryRS=Sérvia CountrySC=Seicheles -CountrySL=Serra Leoa -CountrySK=Eslováquia -CountrySI=Eslovênia -CountrySB=Ilhas Salomão -CountrySO=Somália -CountryZA=África do Sul CountryGS=Ilhas Geórgias do Sul e Sandwich do Sul -CountryLK=Sri Lanka -CountrySD=Sudão -CountrySR=Suriname -CountrySJ=Svalbard e Jan Mayen -CountrySZ=Suazilândia -CountrySY=Síria -CountryTW=Taiwan -CountryTJ=Tajiquistão -CountryTZ=Tanzânia -CountryTH=Tailândia -CountryTL=Timor-Leste -CountryTK=Toquelau -CountryTO=Tonga -CountryTT=Trinidad e Tobago -CountryTR=Turquia -CountryTM=Turquemenistão CountryTC=Ilhas Turcas e Caicos -CountryTV=Tuvalu -CountryUG=Uganda CountryUA=Ucrânia -CountryAE=Emirados Árabes Unidos CountryUM=Ilhas Menores Distantes dos Estados Unidos -CountryUY=Uruguai -CountryUZ=Uzbequistão -CountryVU=Vanuatu -CountryVE=Venezuela CountryVN=Vietnã -CountryVG=Ilhas Virgens Britânicas CountryVI=Ilhas Virgens, EUA -CountryWF=Wallis e Futuna CountryEH=Saara Ocidental -CountryYE=Iêmen -CountryZM=Zâmbia -CountryZW= Zimbábue -CountryGG=Guernsey -CountryIM=Ilha de Man -CountryJE=Jersey -CountryME=Montenegro +CountryZW=Zimbábue CountryBL=São Bartolomeu CountryMF=São Martinho - -##### Civilities ##### -CivilityMME=Sra. -CivilityMR=Sr. CivilityMLE=Srta. CivilityMTRE=Me. CivilityDR=Dr. -##### Currencies ##### -Currencyeuros=Euros CurrencyAUD=Dólares australianos CurrencySingAUD=Dólar australiano CurrencyCAD=Dólares canadenses CurrencySingCAD=Dólar canadense -CurrencyCHF=Francos suíços CurrencySingCHF=Franco suíço -CurrencyEUR=Euros -CurrencySingEUR=Euro CurrencyFRF=Francos franceses -CurrencySingFRF=Franco francês CurrencyGBP=Libras esterlinas CurrencySingGBP=Libra esterlina CurrencyINR=Rupias indianas -CurrencySingINR=Rupia indiana CurrencyMAD=Dirhames -CurrencySingMAD=Dirham CurrencyMGA=Ariaris CurrencySingMGA=Ariari CurrencyMUR=Rupias mauricianas @@ -283,38 +74,15 @@ CurrencyUSD=Dólares americanos CurrencySingUSD=Dólar americano CurrencyUAH=Grívnias CurrencySingUAH=Grívnia -CurrencyXAF=Francos CFA BEAC -CurrencySingXAF=Franco CFA BEAC -CurrencyXOF=Francos CFA BCEAO -CurrencySingXOF=Franco CFA BCEAO CurrencyXPF=Francos CFP -CurrencySingXPF=Franco CFP CurrencyCentSingEUR=centavo CurrencyCentINR=paise -CurrencyCentSingINR=paisa -CurrencyThousandthSingTND=milésimo -#### Input reasons ##### -DemandReasonTypeSRC_INTE=Internet DemandReasonTypeSRC_CAMP_MAIL=Campanha por correspondência DemandReasonTypeSRC_CAMP_EMAIL=Campanha por e-mail DemandReasonTypeSRC_CAMP_PHO=Campanha por telefone DemandReasonTypeSRC_CAMP_FAX=Campanha por fax -DemandReasonTypeSRC_COMM=Contato comercial DemandReasonTypeSRC_SHOP=Contato na loja DemandReasonTypeSRC_WOM=Palavra da boca -DemandReasonTypeSRC_PARTNER=Parceiro -DemandReasonTypeSRC_EMPLOYEE=Empregado -DemandReasonTypeSRC_SPONSORING=Patrocínio -#### Paper formats #### -PaperFormatEU4A0=Formato 4A0 -PaperFormatEU2A0=Formato 2A0 -PaperFormatEUA0=Formato A0 -PaperFormatEUA1=Formato A1 -PaperFormatEUA2=Formato A2 -PaperFormatEUA3=Formato A3 -PaperFormatEUA4=Formato A4 -PaperFormatEUA5=Formato A5 -PaperFormatEUA6=Formato A6 PaperFormatUSLETTER=Formato Carta, EUA PaperFormatUSLEGAL=Formato Legal, EUA PaperFormatUSEXECUTIVE=Formato Executivo, EUA diff --git a/htdocs/langs/pt_BR/donations.lang b/htdocs/langs/pt_BR/donations.lang index 10cf85a921b75adae67f2841863a30c8d1a765b8..639052d56e5bd2de4bd49b5f897068fbe5d766ca 100644 --- a/htdocs/langs/pt_BR/donations.lang +++ b/htdocs/langs/pt_BR/donations.lang @@ -2,7 +2,6 @@ Donation=Doação Donations=Doações DonationRef=Ref. da doação -Donor=Doador AddDonation=Criar uma doação NewDonation=Nova doação DeleteADonation=Excluir uma doação @@ -15,18 +14,13 @@ DonationStatusPromiseValidated=Promessa validada DonationStatusPaid=Doação recebida DonationStatusPromiseNotValidatedShort=Não validada DonationStatusPromiseValidatedShort=Validada -DonationStatusPaidShort=Recebido DonationTitle=Recibo de doação -DonationDatePayment=Data de pagamento -ValidPromess=Validar promessa DonationReceipt=Recibo de doação DonationsModels=Modelo de documento de recepção de Doação LastModifiedDonations=Últimas %s doações modificadas DonationRecipient=Recipiente doaçaõ IConfirmDonationReception=O beneficiário declara ter recebido, como doação, o seguinte montante MinimumAmount=O montante mínimo é de %s -FreeTextOnDonations=Texto livre para mostrar no rodapé -FrenchOptions=Opções para França DONATION_ART200=Mostrar o artigo 200 do CGI se você está preocupado DONATION_ART238=Mostrar o artigo 238 do CGI se você está preocupado DONATION_ART885=Mostrar o artigo 885 do CGI se você está preocupado diff --git a/htdocs/langs/pt_BR/ecm.lang b/htdocs/langs/pt_BR/ecm.lang index fa7fb644d9bc6d8492f23987300c7c122b65d50b..5ad21433a6b1584998dbbf9e3055dc3574132146 100644 --- a/htdocs/langs/pt_BR/ecm.lang +++ b/htdocs/langs/pt_BR/ecm.lang @@ -1,12 +1,9 @@ # Dolibarr language file - Source file is en_US - ecm ECMNbOfDocs=Nr. de documentos -ECMSection=Pasta ECMSectionManual=Pasta manual ECMSectionAuto=Pasta automática ECMSectionsManual=Pastas manuais ECMSectionsAuto=Pastas automáticas -ECMSections=Pastas -ECMRoot=Raíz ECMNewSection=Criar pasta ECMAddSection=Adicionar pasta ECMCreationDate=Data criação @@ -14,25 +11,18 @@ ECMNbOfFilesInDir=Número de arquivos na pasta ECMNbOfSubDir=Número de subpastas ECMNbOfFilesInSubDir=Numero de arquivos nos subpastas ECMCreationUser=Criado por -ECMArea=Área GED ECMAreaDesc=O GED (Gestão Eletrônica de Documentos) permite salvar, compartilhar e pesquisar rapidamente todos os tipos de documentos contidos no Dolibarr. ECMAreaDesc2=* As pastas automáticas são geradas automaticamente quando algum arquivo é adicionado a algum ficheiro do sistema.<br>* As pastas manuais podem ser usados para guardar documentos sem ligação a um cadastro do sistema. -ECMSectionWasRemoved=A pasta <b>%s</b> foi eliminada ECMSearchByKeywords=Busca usando palavras chave ECMSearchByEntity=Busca por objeto ECMSectionOfDocuments=Pastas de documentos -ECMTypeAuto=Automático ECMDocsBySocialContributions=Documentos ligados a impostos sociais ou fiscais ECMDocsByThirdParties=Documentos associados a fornecedores ECMDocsByProposals=Documentos associados a orçamentos -ECMDocsByOrders=Documentos associados a pedidos -ECMDocsByContracts=Documentos associados a contratos ECMDocsByInvoices=Documentos associados a faturas do cliente -ECMDocsByProducts=Documentos associados a produtos ECMDocsByProjects=Documentos associados a projetos ECMDocsByUsers=Documentos relacionados a usuários ECMDocsByInterventions=Documentos ligados a intervenções -ECMNoDirectoryYet=Nenhuma pasta criada ShowECMSection=Exibir pasta DeleteSection=Apagar pasta ConfirmDeleteSection=Por favor confirmar a remocao do diretorio <b>%s</b>? diff --git a/htdocs/langs/pt_BR/errors.lang b/htdocs/langs/pt_BR/errors.lang index a85964fefce538d36dc008ee7d8a59f0a4ccbcb7..2ede6f11a9cbedd15d89cff4d750c5e7704ab56a 100644 --- a/htdocs/langs/pt_BR/errors.lang +++ b/htdocs/langs/pt_BR/errors.lang @@ -1,14 +1,9 @@ # Dolibarr language file - Source file is en_US - errors - -# No errors NoErrorCommitIsDone=Sem erros, garantimos -# Errors ErrorButCommitIsDone=Erros foram encontrados mas, apesar disso, validamos ErrorBadEMail=O e-mail %s está errado ErrorBadUrl=O URL %s está errado ErrorBadValueForParamNotAString=Valor ruim para o seu parâmetro por falta, possivelmente, de tradução. -ErrorLoginAlreadyExists=O login %s já existe. -ErrorGroupAlreadyExists=O grupo %s já existe. ErrorRecordNotFound=Registro não encontrado. ErrorFailToCopyFile=Houve uma falha ao copiar o arquivo '<b>%s</b>' para '<b>%s</b>'. ErrorFailToRenameFile=Houve uma falha ao renomear o arquivo '<b>%s</b>' para '<b>%s</b>'. @@ -26,12 +21,9 @@ ErrorBadCustomerCodeSyntax=Sintaxe inadequada para o código de cliente ErrorBadBarCodeSyntax=Bad sintaxe para código de barras. Pode ser que você definir um tipo de código de barras mal ou você definida uma máscara de código de barras para a numeração que não coincide com o valor verificado. ErrorCustomerCodeRequired=Código de cliente necessário ErrorBarCodeRequired=Código de barras necessário -ErrorCustomerCodeAlreadyUsed=Código de cliente já utilizado ErrorBarCodeAlreadyUsed=Código de barras já utilizado -ErrorPrefixRequired=Prefixo obrigatório ErrorBadSupplierCodeSyntax=Sintaxe inadequada para o código de fornecedor ErrorSupplierCodeRequired=Código de fornecedor necessário -ErrorSupplierCodeAlreadyUsed=Código de fornecedor já utilizado ErrorBadParameters=Parâmetros inadequados ErrorBadValueForParameter=Valor incorreto '%s' para o parâmetro '%s' ErrorBadImageFormat=Arquivo imagem de formato não suportado (Seu PHP não suporta funções para converter neste formato) @@ -69,7 +61,6 @@ ErrorLDAPSetupNotComplete=A correspondência Dolibarr-LDAP não está completa. ErrorLDAPMakeManualTest=foi criado unn Arquivo .ldif na pasta %s. Trate de gastor manualmente este Arquivo a partir da linha de comandos para Obter mais detalles acerca do error. ErrorCantSaveADoneUserWithZeroPercentage=Não é possível salvar uma ação com status "sem começar" se o campo "feito por" estiver preenchido. ErrorRefAlreadyExists=A ref. utilizada para a criação já existe. -ErrorPleaseTypeBankTransactionReportName=Introduzca o Nome do registo bancario sobre a qual o escrito está constatado (formato AAAAMM ó AAAMMJJ) ErrorRecordHasChildren=Falha na exclusão do registro, uma vez que ele possui dependentes. ErrorRecordIsUsedCantDelete=Não é possível excluir o registro. Ele já é usado por ou integra outro objeto. ErrorModuleRequireJavascript=Javascript não deve ser desativado para ter esse recurso funcionando. Para ativar / desativar o Javascript, vá ao menu Home-> Configuração-> Display. @@ -84,16 +75,13 @@ ErrorSpecialCharNotAllowedForField=O campo "%s" não aceita caracteres especiais ErrorNumRefModel=Uma referência existe no banco de dados (% s) e não é compatível com esta regra de numeração. Remover registro ou referência renomeado para ativar este módulo. ErrorQtyTooLowForThisSupplier=Quantidade insuficiente para este fornecedor ErrorModuleSetupNotComplete=A configuração do módulo parece estar incompleta. Vá para Início >> Configuração >> Módulos para completá-la. -ErrorBadMask=Erro na máscara ErrorBadMaskFailedToLocatePosOfSequence=Erro, máscara sem número de sequência ErrorBadMaskBadRazMonth=Erro, valor de redefinição ruim ErrorMaxNumberReachForThisMask=Número máximo de alcance para essa máscara ErrorCounterMustHaveMoreThan3Digits=Contador deve ter mais de 3 dígitos -ErrorSelectAtLeastOne=Erro. Selecione pelo menos uma entrada. ErrorDeleteNotPossibleLineIsConsolidated=Não e possívelexcluir porque registro está ligada a uma transação bancária que está conciliada ErrorProdIdAlreadyExist=%s é atribuído a outro terço ErrorFailedToSendPassword=Houve uma falha no envio da senha -ErrorFailedToLoadRSSFile=Falha ao obter feed RSS. Tente adicionar MAIN_SIMPLEXMLLOAD_DEBUG constante se as mensagens de erro não fornecer informações suficientes. ErrorForbidden=Acesso negado. <br> Você tenta acessar a uma página, área ou característica de um módulo desativado ou sem estar em uma sessão autenticada ou que não é permitido para o usuário. ErrorForbidden2=Os permissões para este usuário podem ser designados por o administrador Dolibarr mediante o menu %s-> %s. ErrorForbidden3=Dolibarr não parece funcionar em uma Sessão autentificada. Consulte a documentação de Instalação de Dolibarr para saber cómo administrar as autenticaciones (htaccess, mod_auth u outro...). @@ -176,9 +164,6 @@ ErrorStockIsNotEnoughToAddProductOnShipment=O estoque não é suficiente para o ErrorStockIsNotEnoughToAddProductOnProposal=O estoque não é suficiente para o produto %s para adicioná-lo a uma nova proposta. ErrorFailedToLoadLoginFileForMode=Falha para recuperar o arquivo de login para o modo '%s'. ErrorModuleNotFound=O arquivo do módulo não foi encontrado. -ErrorFieldAccountNotDefinedForBankLine=O valor para a conta da Contabilidade não foi definido para a linha do banco de origem %s - -# Warnings WarningPasswordSetWithNoAccount=A senha foi definida para esse membro. No entanto, nenhuma conta de usuário foi criada. Portanto, esta senha é armazenada, mas não pode ser usado para acessar Dolibarr. Ele pode ser usado por um módulo / interface externa, mas se você não precisa definir qualquer login nem palavra-passe para um membro, você pode desabilitar a opção "Gerenciar um login para cada membro" da configuração do módulo-Membro. Se você precisa para gerenciar um login, mas não precisa de qualquer senha, você pode manter este campo em branco para evitar este aviso. Nota: E-mail pode também ser utilizado como uma entre o membro se está ligado a um utilizador. WarningMandatorySetupNotComplete=Há parâmetros de configuração obrigatórios ainda não definidos WarningSafeModeOnCheckExecDir=Atenção, a opção PHP <b>safe_mode</b> está em modo de comando devem ser armazenados dentro de um diretório declarado pelo php parâmetro <b>safe_mode_exec_dir.</b> diff --git a/htdocs/langs/pt_BR/exports.lang b/htdocs/langs/pt_BR/exports.lang index 5133a026d86eeb28e196a0cc32989aa2067f0c09..dac42587447370f8072e073afb82192f88683b9a 100644 --- a/htdocs/langs/pt_BR/exports.lang +++ b/htdocs/langs/pt_BR/exports.lang @@ -7,34 +7,19 @@ ExportableDatas=Conjunto de dados que podem ser exportados ImportableDatas=Conjunto de dados que podem ser importados SelectExportDataSet=Escolha um conjunto predefinido de dados que deseja exportar... SelectImportDataSet=Escolha um conjunto predefinido de dados que deseja importar... -SelectExportFields=Escolha os campos que devem exportar-se, ou escolha um perfil de exportação predefinido SelectImportFields=Escolha campos de arquivo de fonte que você deseja importar e seu campo de destino no banco de dados, movendo-os para cima e para baixo com a seta, ou selecione um perfil de importação pré-definido: NotImportedFields=Os campos de arquivo de origem não importado -SaveExportModel=Guardar este perfil de exportação assim pode reutiliza-lo posteriormente... SaveImportModel=Guardar este perfil de importação assim pode reutiliza-lo posteriormente... -ExportModelName=Nome do perfil de exportação -ExportModelSaved=Perfil de exportação guardado com o nome de <b>%s</b>. -ExportableFields=Campos Exportáveis -ExportedFields=Campos a Exportar ImportModelName=Nome do perfil de importação ImportModelSaved=Perfil de importação guardado com o nome de <b>%s</b>. -DatasetToExport=Conjunto de dados a exportar DatasetToImport=Conjunto de dados a importar -ChooseFieldsOrdersAndTitle=Escolha a ordem dos campos... -FieldsTitle=Título Campos -FieldTitle=Campo título NowClickToGenerateToBuildExportFile=Agora, faça click em "Gerar" para gerar o arquivo exportação... AvailableFormats=Formatos disponíveis -LibraryShort=Biblioteca -Step=Passo FormatedImport=Assistente de importação -FormatedImportDesc1=Esta área permite realizar importações personalizadas de dados mediante um ajudante que evita ter conhecimentos técnicos de Dolibarr. FormatedImportDesc2=O primeiro passo consiste em escolher o tipo de dado que deve importar, logo o arquivo e a continuação escolher os campos que deseja importar. FormatedExport=Assistente de exportação -FormatedExportDesc1=Esta área permite realizar exportações personalizadas dos dados mediante um ajudante que evita ter conhecimentos técnicos de Dolibarr. FormatedExportDesc2=O primeiro passo consiste em escolher um dos conjuntos de dados predefinidos, a continuação escolher os campos que quer exportar para o arquivo e em que ordem. FormatedExportDesc3=Uma vez selecionados os dados, é possível escolher o formato do arquivo de exportação gerado. -Sheet=Folha NoImportableData=Não existe tipo de dados importavel (não existe nenhum módulo com definições de dados importavel ativado) FileSuccessfullyBuilt=Arquivo gerado SQLUsedForExport=Pedido de SQL usado para construir exportação de arquivo @@ -48,17 +33,13 @@ LineTotalHT=Valor do HT por linha LineTotalTTC=Acrescido de ICMS da linha LineTotalVAT=Valor ICMS por Linha TypeOfLineServiceOrProduct=Tipo de Linha (0 -FileWithDataToImport=Arquivo com os dados de importação FileToImport=Arquivo de origem de importação FileMustHaveOneOfFollowingFormat=Arquivo para importação deve ter um dos seguinte formato DownloadEmptyExample=Baixar exemplo de arquivo de origem vazio ChooseFormatOfFileToImport=Escolha o formato de arquivo a ser usado como formato de arquivo de importação clicando no para selecioná-lo ... ChooseFileToImport=Carregar arquivo e clique no picto% s para selecionar o arquivo como arquivo de importação de fonte ... -SourceFileFormat=Formato de arquivo de origem FieldsInSourceFile=Campos em arquivo de origem FieldsInTargetDatabase=Campos de destino no banco de dados Dolibarr (negrito = obrigatório) -Field=Campo -NoFields=Nenhum campo MoveField=Mover campo número da colunas ExampleOfImportFile=Exemplo de arquivo de importação SaveImportProfile=Guardar este perfil de importação @@ -67,13 +48,10 @@ TablesTarget=Mesas alvejados FieldsTarget=Alvo FieldTarget=Campo de destino FieldSource=Campo Fonte -NbOfSourceLines=Número de linhas no arquivo de origem NowClickToTestTheImport=Verifique os parâmetros de importação que você definiu. Se eles estiverem corretos, clique no botão <b>"% s"</b> para iniciar uma simulação do processo de importação (os dados não serão alterados em seu banco de dados, é apenas uma simulação para o momento) ... -RunSimulateImportFile=Inicie a simulação de importação FieldNeedSource=Este campo requer dados do arquivo de origem SomeMandatoryFieldHaveNoSource=Alguns campos obrigatórios não têm nenhuma fonte de arquivo de dados InformationOnSourceFile=Informações sobre arquivo de origem -InformationOnTargetTables=Informações sobre os campos de destino SelectAtLeastOneField=Mude pelo menos um campo de origem na coluna de campos para exportar SelectFormat=Escolha este formato de arquivo de importação RunImportFile=Arquivo de importação de lançamento @@ -83,7 +61,6 @@ ErrorMissingMandatoryValue=Dados obrigatórios esta vazio no arquivo de origem p TooMuchErrors=Há ainda outras linhas de origem com erros mas a produção tem sido limitado. TooMuchWarnings=Há ainda outras linhas de origem com avisos, mas a produção tem sido limitado. EmptyLine=Linha vazia (serão descartados) -CorrectErrorBeforeRunningImport=Primeiro, você deve corrigir todos os erros antes de executar a importação definitiva. FileWasImported=O arquivo foi importado com o números. YouCanUseImportIdToFindRecord=Você pode encontrar todos os registros importados para o seu banco de dados pela filtragem no campo <b>import_key='%s'</b>. NbOfLinesOK=Número de linhas sem erros e sem avisos: @@ -95,17 +72,15 @@ DataComeFromIdFoundFromCodeId=O código que vem de número do campo do arquivo d DataIsInsertedInto=Dados provenientes do arquivo de origem será inserido o seguinte campo: DataIDSourceIsInsertedInto=O id do objeto pai encontrado usando os dados em arquivo de origem, será inserido o seguinte campo: DataCodeIDSourceIsInsertedInto=O ID da linha pai encontrado a partir do código, será inserido no campo a seguir: -SourceRequired=Valor dos dados é obrigatória SourceExample=Exemplo de possível valor dos dados ExampleAnyRefFoundIntoElement=Qualquer ref encontrada para o elemento ExampleAnyCodeOrIdFoundIntoDictionary=Qualquer código (ou id) encontrado em dicionário -CSVFormatDesc=Formato de arquivo de valores separados por vírgulas . Este é um formato de arquivo de texto, onde os campos são separados pelo separador. Se separador é encontrado dentro de um conteúdo de campo, o campo é arredondado pelo caráter rodada . Fuja personagem para escapar caráter rodada é +CSVFormatDesc=Formato de arquivo de valores separados por vírgulas . Este é um formato de arquivo de texto, onde os campos são separados pelo separador. Se separador é encontrado dentro de um conteúdo de campo, o campo é arredondado pelo caráter rodada . Fuja personagem para escapar caráter rodada é Excel95FormatDesc=Formato de arquivo do Excel. (Xls) Este é o formato Excel 95 nativa (BIFF5). Excel2007FormatDesc=Formato de arquivo do Excel (. Xlsx) Este é o formato Excel 2007 nativo (SpreadsheetML). TsvFormatDesc=Formato de arquivo Tab Separated Value (. TSV) Este é um formato de arquivo de texto, onde os campos são separados por um tabulador [Tab]. ExportFieldAutomaticallyAdded=O campo <b>%s</b> foi adicionado automaticamente. Isto evitará que você tenha linhas semelhantes a serem tratadas como registro duplicado (com este campo adicionado, todas as linhas terão sua própria ID e serão então diferentes). CsvOptions=Opções csv -Separator=Separador Enclosure=Recinto SpecialCode=Código especial ExportStringFilter=Permite substituir um ou mais caracteres no texto @@ -115,7 +90,6 @@ ImportFromLine=Importar iniciando da linha número EndAtLineNb=Terminar na linha número SetThisValueTo2ToExcludeFirstLine=Por exemplo, coloque 3 para este valor para excluir as 2 primeiras linhas KeepEmptyToGoToEndOfFile=Manter este campo em branco para ir até o fim do arquivo -## filters SelectFilterFields=Se você deseja filtrar alguns valores, apenas os valores de entrada aqui. FilteredFields=Campos filtrados FilteredFieldsValues=Valor para o filtro diff --git a/htdocs/langs/pt_BR/externalsite.lang b/htdocs/langs/pt_BR/externalsite.lang index 7962ccf0ac4ab44e301eaae71be496a319ebfbb8..00d4c89c287d07454231c0d309cd2be2bfc1fa24 100644 --- a/htdocs/langs/pt_BR/externalsite.lang +++ b/htdocs/langs/pt_BR/externalsite.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - externalsite ExternalSiteSetup=Configurar linque para o website externo -ExternalSiteURL=URL do site externo ExternalSiteModuleNotComplete=O módulo SiteExterno não foi configurado corretamente. ExampleMyMenuEntry=Minha entrada do menu diff --git a/htdocs/langs/pt_BR/ftp.lang b/htdocs/langs/pt_BR/ftp.lang index e75f5994c86085d2d89d25c1ba0d201d08fbb25f..efafabd98a2fa622779b08cdb551d674d0be52df 100644 --- a/htdocs/langs/pt_BR/ftp.lang +++ b/htdocs/langs/pt_BR/ftp.lang @@ -9,6 +9,5 @@ FailedToConnectToFTPServer=Falha na conexão ao servidor FTP (server% s, porta% FailedToConnectToFTPServerWithCredentials=Falha ao efetuar login no servidor FTP com login/senha FTPFailedToRemoveFile=Falha ao remover o arquivo <b>%s</ b>. FTPFailedToRemoveDir=Falha ao remover diretório <b>%s</ b> (verifique as permissões e se o diretório está vazio). -FTPPassiveMode=Modo passivo ChooseAFTPEntryIntoMenu=Escolha uma entrada de FTP em menu ... FailedToGetFile=Falha ao obter arquivos %s diff --git a/htdocs/langs/pt_BR/help.lang b/htdocs/langs/pt_BR/help.lang index c88def66d0b52dab42fbcc5517df711c422cb773..8f53e3087e9e33b1e2f3b802a3ea32584b0059a9 100644 --- a/htdocs/langs/pt_BR/help.lang +++ b/htdocs/langs/pt_BR/help.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - help -CommunitySupport=Fórum/Wiki suporte +CommunitySupport=Fórum/Wiki suporte EMailSupport=E-mails de suporte RemoteControlSupport=Suporte em tempo real / remoto OtherSupport=Outros suportes @@ -8,15 +8,12 @@ HelpCenter=Central de ajuda DolibarrHelpCenter=Centro de suporte e ajuda Dolibarr ToGoBackToDolibarr=Caso contrário, clique aqui para usar Dolibarr TypeOfSupport=Fonte de suporte -TypeSupportCommunauty=Comunidade (grátis) -TypeSupportCommercial=Comercial -TypeOfHelp=Tipo NeedHelpCenter=PRecisa de ajuda ou suporte? Efficiency=eficiência TypeHelpOnly=Somente ajuda TypeHelpDev=Ajuda+Desenvolvimento TypeHelpDevForm=Ajuda+Desenvolvimento+Formação -ToGetHelpGoOnSparkAngels1=Algumas empresas podem prover um suporte online rápido (às vezes imediato) e mais eficiente ao assumirem o controle de seu computador. Tais ajudantes podem ser encontrados na página <b>%s</b>: +ToGetHelpGoOnSparkAngels1=Algumas empresas podem prover um suporte online rápido (às vezes imediato) e mais eficiente ao assumirem o controle de seu computador. Tais ajudantes podem ser encontrados na página <b>%s</b>: ToGetHelpGoOnSparkAngels3=Você também pode acessar a lista de todos os treinadores disponíveis para o Dolibarr, para isto clique no botão ToGetHelpGoOnSparkAngels2=Às vezes, não há nenhuma empresa disponível no momento de fazer sua pesquisa, por isso acho que para mudar o filtro para procurar "tudo disponibilidade". Você será capaz de enviar mais pedidos. BackToHelpCenter=Caso contrário, clique aqui para ir para trás para ajudar a home page . diff --git a/htdocs/langs/pt_BR/holiday.lang b/htdocs/langs/pt_BR/holiday.lang index a56946ae68d0f4dbd5047240a68b7b868dd13f89..a201f268953953c04714c3b0ec2201e6cbae4fd0 100644 --- a/htdocs/langs/pt_BR/holiday.lang +++ b/htdocs/langs/pt_BR/holiday.lang @@ -1,15 +1,9 @@ # Dolibarr language file - Source file is en_US - holiday -HRM=RH -Holidays=Licenças -CPTitreMenu=Licenças MenuReportMonth=Relatório mensal MenuAddCP=Nova solicitação de licença NotActiveModCP=Você deve ativar o módulo Gestão de solicitações de licença para visualizar esta página. AddCP=Fazer uma solicitação de licença -DateDebCP=Data de início DateFinCP=Data de término -DateCreateCP=Data de criação -DraftCP=Rascunho ToReviewCP=Aguardando aprovação ApprovedCP=Aprovado CancelCP=Cancelado @@ -17,13 +11,11 @@ RefuseCP=Negado ValidatorCP=Aprovador ListeCP=Lista de licenças ReviewedByCP=Será revisada por -DescCP=Descrição SendRequestCP=Criar solicitação de licença DelayToRequestCP=Solicitações devem ser feitas pelo menos<b> %s dias (s)</b> antes. MenuConfCP=Saldo de folgas SoldeCPUser=O saldo de folgas é de <b>%s</b> dias. ErrorEndDateCP=Você deve selecionar uma data final posterior à data inicial. -ErrorSQLCreateCP=Ocorreu um erro de SQL durante a criação: ErrorIDFicheCP=Ocorreu um erro, a solicitação de licença não existe. ReturnCP=Retorne à página anterior ErrorUserViewCP=Você não está autorizado a ler este pedido de licença. @@ -31,11 +23,7 @@ InfosWorkflowCP=Workflow da informação RequestByCP=Solicitada por TitreRequestCP=Solicitação de licença NbUseDaysCP=Número de dias de folga consumidos -EditCP=Editar DeleteCP=Excluir -ActionRefuseCP=Recusar -ActionCancelCP=Cancelar -StatutCP=Estado TitleDeleteCP=Excluir a solicitação de licença ConfirmDeleteCP=Confirmar a eliminação da solicitação de licença? ErrorCantDeleteCP=Erro: você não tem o direito de excluir esta solicitação de licença. @@ -46,7 +34,6 @@ NoDateFin=Você deve selecionar uma data de término. ErrorDureeCP=O seu pedido de licença não contém dia de trabalho. TitleValidCP=Aprovar a solicitação de licença ConfirmValidCP=Quer mesmo aprovar esta solicitação de licença? -DateValidCP=Data aprovada TitleToValidCP=Enviar solicitação de licença ConfirmToValidCP=Quer mesmo enviar a solicitação de licença? TitleRefuseCP=Recusar a solicitação de licença @@ -59,7 +46,6 @@ DateRefusCP=Data da recusa DateCancelCP=Data do cancelamento DefineEventUserCP=Atribuir uma licença excepcional para um usuário addEventToUserCP=Conceder licença -MotifCP=Motivo UserCP=Usuário ErrorAddEventToUserCP=Ocorreu um erro ao adicionar a licença excepcional. AddEventToUserOkCP=A adição da licença excepcional foi completada. @@ -78,16 +64,12 @@ ManualUpdate=Atualização manual HolidaysCancelation=Cancelamento da solicitação de licença EmployeeLastname=Sobrenome do funcionário EmployeeFirstname=Nome do funcionário - -## Configuration du Module ## LastUpdateCP=Última atualização automática de fixação de licenças MonthOfLastMonthlyUpdate=Mês da última atualização automática de fixação de licenças UpdateConfCPOK=Atualizado com sucesso. -Module27130Name= Gestão de solicitações de licença -Module27130Desc= Gestão de solicitações de licença +Module27130Name=Gestão de solicitações de licença +Module27130Desc=Gestão de solicitações de licença ErrorMailNotSend=Ocorreu um erro durante o envio de e-mail: -NoticePeriod=Período de aviso -#Messages HolidaysToValidate=Confirmar as solicitações de licença HolidaysToValidateBody=Segue abaixo uma solicitação de licença a confirmar HolidaysToValidateDelay=Este pedido de licença terá lugar dentro de um período de menos de %s dias. diff --git a/htdocs/langs/pt_BR/hrm.lang b/htdocs/langs/pt_BR/hrm.lang index 05a6ead136ccc130628aa42e57d4f960f683c620..5ccbd6446afe99ac55d054ba0cc714ff478da512 100644 --- a/htdocs/langs/pt_BR/hrm.lang +++ b/htdocs/langs/pt_BR/hrm.lang @@ -1,17 +1,7 @@ -# Dolibarr language file - en_US - hrm -# Admin +# Dolibarr language file - Source file is en_US - hrm HRM_EMAIL_EXTERNAL_SERVICE=E-mail para evitar HRM serviço externo Establishments=Estabelecimentos -Establishment=Estabelecimento -NewEstablishment=Novo estabelecimento DeleteEstablishment=Excluir estabelecimento ConfirmDeleteEstablishment=Você tem certeza que deseja excluir este estabelecimento? -OpenEtablishment=Abrir estabelecimento -CloseEtablishment=Fechar estabelecimento -# Dictionary DictionaryDepartment=RH - Lista de departamentos DictionaryFunction=RH - Lista de funções -# Module -Employees=Funcionários -Employee=Funcionário -NewEmployee=Novo funcionário diff --git a/htdocs/langs/pt_BR/incoterm.lang b/htdocs/langs/pt_BR/incoterm.lang index 0ac94a6c5a0e6227457dcfea11b003a2981444df..8aa2070c3e825e320ad35235d0a14d4fe8b8fe43 100644 --- a/htdocs/langs/pt_BR/incoterm.lang +++ b/htdocs/langs/pt_BR/incoterm.lang @@ -1,3 +1,2 @@ -Module62000Name=Incoterm +# Dolibarr language file - Source file is en_US - incoterm Module62000Desc=Adicionar recursos para gerenciar Incoterm -IncotermLabel=Incoterms diff --git a/htdocs/langs/pt_BR/install.lang b/htdocs/langs/pt_BR/install.lang index d61c1e5c0d7ad7d609ee1a019148f738bb516904..f1f5b1dae5556a454fd8e28f7d3868ca5cb2db17 100644 --- a/htdocs/langs/pt_BR/install.lang +++ b/htdocs/langs/pt_BR/install.lang @@ -7,15 +7,12 @@ ConfFileCouldBeCreated=O arquivo de configuração <b>conf.php</b> pôde ser cri ConfFileIsNotWritable=O arquivo de configuração <b>conf.php</b> não é passível de escrita, verifique as permissões sff, o seu servidor web tem de ter permissões de escrita neste arquivo cem Linux, chmod 666). ConfFileIsWritable=O arquivo de configuração <b>conf.php</b> tem as permissões corretas. ConfFileReload=Recarregar todas as informaçoes do arquivo de configuraçao. -PHPSupportSessions=Este PHP suporta sessões. -PHPSupportPOSTGETOk=Este PHP suporta variáveis GET e POST. PHPSupportPOSTGETKo=É possível que a sua instalação do PHP não possui suporte ou não está habilitado o suporte à variáveis POST e / ou GET. Verifique seu parâmetro <b>variables_order</b> em seu arquivo de configuração php.ini. PHPSupportGD=Seu PHP possui suporte as funções gráficas GD. PHPSupportCurl=Este PHP suporta Curl. PHPSupportUTF8=Seu PHP possui suporte as funções UTF8. PHPMemoryOK=Seu parametro PHP max session memory está definido <b>para %s.</b> Isto deve ser suficiente. PHPMemoryTooLow=Seu parametro PHP max session memory está definido <b>para %s</b> bytes. Isto deve ser muito baixo. Alterar o seu arquivo <b>php.ini em memory_limit</b> para definir parâmetro para pelo <b>menos %s</b> bytes. -Recheck=Clique aqui para um teste mais significativo ErrorPHPDoesNotSupportSessions=Sua instalação PHP não suporta sessões. Esta característica é necessária para tornar Dolibarr funcional. Verifique a sua configuração do PHP. ErrorPHPDoesNotSupportGD=Sua instalação PHP não suporta gráficos ou não possui a função GD. Gráficos não estarão disponíveis. ErrorPHPDoesNotSupportCurl=Sua instalacao do PHP nao suporta Curl. @@ -32,7 +29,6 @@ ErrorDatabaseAlreadyExists=Base de dados' %s' já existe. IfDatabaseNotExistsGoBackAndUncheckCreate=Se não existe base de dados, volte e verifique a opção "Criar uma base de dados". IfDatabaseExistsGoBackAndCheckCreate=Caso dados já existe, volte e desmarque a opção "Criar uma base de dados". WarningBrowserTooOld=Navegador antigo. Faça a atualizaçao do seu navegador para uma versao mais recente de Firefox, Chrome ou Opera ( altamente recomendado). -PHPVersion=Versão PHP License=Usando licença ConfigurationFile=Arquivo de configuração WebPagesDirectory=Diretório onde armazenar as páginas web @@ -41,19 +37,13 @@ URLRoot=URL raiz ForceHttps=Forcar conexoes seguras (https) CheckToForceHttps=Escolha esta opcao para forcar conexoes seguras (https).<br>Isto requere que o servidor web esta configurado para uso com certificado SSL. DolibarrDatabase=Base de dados Dolibarr -DatabaseType=Tipo de base de dados -DriverType=Tipo do Driver -Server=Servidor ServerAddressDescription=Nome ou endereço IP para o servidor de banco de dados (database server), normalmente 'localhost' quando o banco de dados está hospedado no mesmo servidor que o servidor web ServerPortDescription=Database server port. Mantenha vazio se desconhecido. -DatabaseServer=Database server -DatabaseName=Nome da base de dados DatabasePrefix=Prefixo tabela banco de dados AdminLogin=Login para o administrador da base de dados Dolibarr. Deixar em branco se a conexão é feita com anônimo PasswordAgain=Introduza a password uma segunda vez AdminPassword=Password para o administrador da base de dados Dolibarr. Deixar em branco se a conexão é feita com anônimo CreateDatabase=Criar uma base de dados -CreateUser=Criar usuário DatabaseSuperUserAccess=Base de dados - Acesso Superuser CheckToCreateDatabase=Verifique se o banco de dados não existe e deve ser criado. <br> Neste caso, você deve preencher o login / senha para a conta de superuser, na parte inferior desta página. CheckToCreateUser=Marque esta opção se o dono do banco de dados não existe e deve ser criado. <br> Neste caso, você deve preencher o login / senha para o superusuário em conta, na parte inferior desta página. @@ -65,15 +55,12 @@ DatabaseCreation=Criação da base de dados CreateDatabaseObjects=Criação dos objetos na base de dados... ReferenceDataLoading=Carregando Dados de base... TablesAndPrimaryKeysCreation=Criação de tabelas e chaves primárias... -CreateTableAndPrimaryKey=Criar tabela %s -CreateOtherKeysForTable=Crie chaves estrangeiras e índices para a tabela %s OtherKeysCreation=Criação de chaves estrangeiras e índices... FunctionsCreation=Criação de Funções... AdminAccountCreation=Criando login do Administrador PleaseTypePassword=Por favor escreva uma password, passwords vazias não são permitidas ! PleaseTypeALogin=Por favor escreva um login ! PasswordsMismatch=As passwords diferem, tente novamente ! -SetupEnd=Fim da Configuração SystemIsInstalled=Instalação completa. SystemIsUpgraded=Dolibarr foi atualizado com êxito. YouNeedToPersonalizeSetup=Você precisa configurar o Dolibarr para atender às suas necessidades (aspecto, funcionalidades, ...). Para isto clique no seguinte link: @@ -84,36 +71,27 @@ MigrationNotFinished=A versao do banco de dados nao e competamente atualizada, v GoToUpgradePage=Vai para a pagina de atualizaçao novamente WithNoSlashAtTheEnd=Sem a barra "/" no final DirectoryRecommendation=É recomendado que você use este diretório fora do diretório das suas páginas web. -LoginAlreadyExists=Já existe -DolibarrAdminLogin=Dolibarr admin login AdminLoginAlreadyExists=Dolibarr conta administrador <b>' %s'</b> já existe. FailedToCreateAdminLogin=Falha na criacao da conta administrador do Dolibarr. WarningRemoveInstallDir=Atenção, por razões de segurança, uma vez que a instalação ou atualização estiver completa, você deve remover o <b>diretório</b> de <b>instalação ou renomeá-lo para install.lock a fim de evitar o seu uso malicioso.</b> -FunctionNotAvailableInThisPHP=Não disponível neste PHP ChoosedMigrateScript=Migrar script selecionado -DataMigration=Migração de dados DatabaseMigration=Estrutura de migração de dados ProcessMigrateScript=Processamento de Script ChooseYourSetupMode=Escolha o seu modo de configuração e clique em "Iniciar" ... FreshInstall=Nova instalação FreshInstallDesc=Utilize este modo se esta for a primeira instalação. Se não, este modo pode reparar uma instalação anterior incompleto, mas se você deseja atualizar sua versão, selecione o modo "Upgrade". -Upgrade=Upgrade UpgradeDesc=Use este modo se você substituiu arquivos antigos do Dolibarr por arquivos de uma versão mais recente. Isto irá atualizar seu banco de dados e dados instalados. -Start=Iniciar InstallNotAllowed=Instalação não permitidas pelas permissões no <b>conf.php</b> YouMustCreateWithPermission=Você deve criar o arquivo %s e definir permissões de escrita sobre ele para instalar o servidor web durante o processo. CorrectProblemAndReloadPage=Corrija o problema e pressione a tecla F5 para recarregar a página. AlreadyDone=Migração OK DatabaseVersion=Database versão -ServerVersion=Database server version YouMustCreateItAndAllowServerToWrite=Você deve criar este diretório para permitir que o servidor web escreva no mesmo. DBSortingCollation=Ordenação dos caracteres YouAskDatabaseCreationSoDolibarrNeedToConnect=Você deseja criar a base de <b>dados %s,</b> mas, para isso, o Dolibarr precisa se conectar ao servidor com permissões de <b>super-usuário %s %s</b>. YouAskLoginCreationSoDolibarrNeedToConnect=Você deseja criar a base de <b>dados %s,</b> mas, para isso, o Dolibarr precisa se conectar ao servidor com permissões de <b>super-usuário %s %s</b>. BecauseConnectionFailedParametersMayBeWrong=Como a conexão falhou, o host, super-usuário ou outro falhou OrphelinsPaymentsDetectedByMethod=Pagamentos órfãos detectado pelo método %s -RemoveItManuallyAndPressF5ToContinue=Remova-o manualmente e pressione F5 para continuar. -FieldRenamed=Campo renomeado IfLoginDoesNotExistsCheckCreateUser=Se login não existe ainda, você deve verificar a opção "Criar usuário" ErrorConnection=Servidor <b>" %s",</b> nome do banco de dados <b>" %s",</b> login <b>" %s",</b> ou senha do banco de dados pode estar errado ou a versão cliente do PHP pode ser muito antiga para comparação de dados com a versão do banco. InstallChoiceRecommanded=Versao recomendada para instalação <b>%s</b> da sua versao corrente <b>%s</b> @@ -128,7 +106,6 @@ NextStepMightLastALongTime=O passo seguinte pode demorar alguns minutos. Por fav MigrationCustomerOrderShipping=Migrar expedição para pedidos de cliente de armazenamento MigrationShippingDelivery=Atualizar armazenamento de expedições MigrationShippingDelivery2=Atualizar armazenamento de expedição 2 -MigrationFinished=Migração terminada LastStepDesc=<strong>Ultimo passo</strong>: Defina aqui o usuario e a senha que voce planeja usar para conectar-se ao software. Nao perca estas credenciais, pois sao da conta que administra todas as outras contas. ActivateModule=Ativar modulo %s ShowEditTechnicalParameters=Clique aqui para mostrar/editar parametros avançados (modo avançado) @@ -138,42 +115,30 @@ KeepDefaultValuesWamp=Se você usa o DoliWamp Setup Wizard, então os valores pr KeepDefaultValuesDeb=Voce esta usando o assistente de configuração do Dolibarr do pacote Linux (Ubuntu, Debian, Fedora...), portanto os valores propostos aqui ja estao otimizados. O unico parametro a informar e a senha do administrador de banco de dados. Mude outros parametros somente se voce sabe o que esta fazendo. KeepDefaultValuesMamp=Você usa o DoliMamp Setup Wizard, para valores propostos aqui já estão otimizados. Alterá-los apenas se souber o que está fazendo. KeepDefaultValuesProxmox=Voçê esta usando o asistente de configuração do Dolibarr da aplicação virtual Proxmox , portanto os valores propostos aqui ja estão otimizados. Mude-os somente se você sabe o que esta fazendo. - -######### -# upgrade MigrationFixData=Correção para dados não normalizados -MigrationOrder=Migração de dados para ordens de clientes -MigrationSupplierOrder=Migração de dados de Fornecedores' ordens +MigrationOrder=Migração de dados para ordens de clientes MigrationProposal=Migração de dados de propostas comerciais MigrationInvoice=Migração de dados para as faturas de clientes -MigrationContract=Migração de dados para os contratos MigrationSuccessfullUpdate=Atualizado com sucesso MigrationUpdateFailed=Falha no processo de upgrade/atualização MigrationRelationshipTables=Migração de dados para as tabelas de relação (%s) MigrationPaymentsUpdate=Correção de dados de pagamento -MigrationPaymentsNumberToUpdate=%s pagamento (s) para atualizar MigrationProcessPaymentUpdate=Atualização de pagamento (s) %s -MigrationPaymentsNothingToUpdate=Não há mais coisas para fazer MigrationPaymentsNothingUpdatable=Não mais pagamentos que podem ser corrigidos MigrationContractsUpdate=Correção de dados de contrato -MigrationContractsNumberToUpdate=%s contrato (s) para atualizar MigrationContractsLineCreation=Criar uma linha de contrato ref %s -MigrationContractsNothingToUpdate=Não há mais coisas para fazer -MigrationContractsFieldDontExist=Campo fk_facture não existe mais. Nada a fazer. MigrationContractsEmptyDatesUpdate=Data de correção de contrato vazio MigrationContractsEmptyDatesUpdateSuccess=Correção de data de contrato vazia feita com sucesso MigrationContractsEmptyDatesNothingToUpdate=Nenhuma data de contrato vazio para corrigir MigrationContractsEmptyCreationDatesNothingToUpdate=Nenhuma data de criação de contrato para corrigir MigrationContractsInvalidDatesUpdate=Valor de data de correção de contrato incorreta MigrationContractsInvalidDateFix=Contrato Correto %s (Data do Contrato=%s, Data do inicio do serviço=%s) -MigrationContractsInvalidDatesNumber=%s contratos modificados MigrationContractsInvalidDatesNothingToUpdate=Sem data com valor incorreto à corrigir MigrationContractsIncoherentCreationDateUpdate=Data de correção de data de criação do contrato MigrationContractsIncoherentCreationDateUpdateSuccess=Correcao de valor errado na criacao da data do contrato concluida com sucesso MigrationContractsIncoherentCreationDateNothingToUpdate=Sem valor incorreto na data de criação de contrato para correção MigrationReopeningContracts=Abrir contrato fechado por erro MigrationReopenThisContract=Reabrir contrato %s -MigrationReopenedContractsNumber=%s contratos modificados MigrationReopeningContractsNothingToUpdate=Sem contratos encerrados para abrir MigrationBankTransfertsUpdate=Atualizar links entre transação bancária e transferência bancária MigrationBankTransfertsNothingToUpdate=Todas as ligações são até a data @@ -188,11 +153,9 @@ MigrationProjectUserResp=Dados da migração do campo fk_user_resp de llx_projet MigrationProjectTaskTime=Atualizar tempo gasto em segundos MigrationActioncommElement=Atualizar dados nas ações MigrationPaymentMode=Migração de dados para o modo de pagamento -MigrationCategorieAssociation=Migração de categorias MigrationEvents=Migração de eventos para adicionar proprietário do evento na tabela de atribuição MigrationRemiseEntity=Atulizacao do valor da tabela llx_societe_remise MigrationRemiseExceptEntity=Atualizacao do valor no campo da tabela llx_societe_remise_except -MigrationReloadModule=Recarregar módulo %s ShowNotAvailableOptions=Mostrar as opções não disponíveis HideNotAvailableOptions=Esconder opções não disponíveis ErrorFoundDuringMigration=O erro será reportado durante o processo de migração então o próximo passo não está disponível. Para ignorar os erros, você pode <a href="%s">clicar aqui</a>, mas a aplicação de algumas funcionalidade não irão funcionar corretamente até que sejam consertadas. diff --git a/htdocs/langs/pt_BR/interventions.lang b/htdocs/langs/pt_BR/interventions.lang index e0232f217321c4c8f82bb8ab55b97cc5d024997b..dff92fe99308af8cb436e9aa34bda74ae33953ae 100644 --- a/htdocs/langs/pt_BR/interventions.lang +++ b/htdocs/langs/pt_BR/interventions.lang @@ -1,29 +1,15 @@ # Dolibarr language file - Source file is en_US - interventions -Intervention=Intervenção -Interventions=Intervenções -InterventionCard=Ficha de Intervenção -NewIntervention=Nova Intervenção AddIntervention=Criar Intervenção -ListOfInterventions=Lista de Intervenções ActionsOnFicheInter=Açoes na intervençao LastInterventions=Últimas %s intervenções -AllInterventions=Todas as Intervenções -CreateDraftIntervention=Criar Rascunho InterventionContact=Contato Intervenção -DeleteIntervention=Eliminar Intervenção -ValidateIntervention=Confirmar Intervenção ModifyIntervention=Modificar intervençao -DeleteInterventionLine=Eliminar Linha de Intervenção CloneIntervention=Clonar intervenção ConfirmDeleteIntervention=Você tem certeza que deseja excluir esta intervenção? ConfirmValidateIntervention=Você tem certeza que deseja validar esta intervenção sob o nome <b>%s</b>? ConfirmModifyIntervention=Você tem certeza que deseja modificar esta intervenção? ConfirmDeleteInterventionLine=Você tem certeza que deseja excluir esta linha de intervenção? ConfirmCloneIntervention=Você tem certeza que deseja clonar esta intervenção? -NameAndSignatureOfInternalContact=Nome e Assinatura do Participante: -NameAndSignatureOfExternalContact=Nome e Assinatura do Cliente: -DocumentModelStandard=Modelo da Norma Intervenção -InterventionCardsAndInterventionLines=Fichas e Linhas de Intervenção InterventionClassifyBilled=Classificar "Faturado" InterventionClassifyUnBilled=Classificar "à faturar" StatusInterInvoiced=Faturado @@ -35,21 +21,17 @@ InterventionValidatedInDolibarr=Intervenção %s validada InterventionModifiedInDolibarr=Intervenção %s alterada InterventionClassifiedBilledInDolibarr=Intervenção %s classificada como Faturada InterventionClassifiedUnbilledInDolibarr=Intervenção %s definida como à faturar -InterventionSentByEMail=Intervenção %s enviada por e-mail InterventionDeletedInDolibarr=Intervenção %s excluída InterventionsArea=Área intervenções DraftFichinter=Rascunho de intervenções LastModifiedInterventions=Últimas %s intervenções modificadas -##### Types de contacts ##### TypeContact_fichinter_external_CUSTOMER=Contato do cliente do seguimento da intervenção -# Modele numérotation PrintProductsOnFichinter=Imprima também linhas do tipo "produto" (e não apenas serviços) na ficha de intervenção PrintProductsOnFichinterDetails=intervenções gerados a partir de ordens UseServicesDurationOnFichinter=duração de uso de serviços para intervenções geradas a partir de ordens InterventionStatistics=Estatística de intervenções NbOfinterventions=Nº de fichas de intervenção NumberOfInterventionsByMonth=Nº de fichas de intervenção por mês (data de validação) -##### Exports ##### InterId=ID de intervenção InterRef=Intervenção ref. InterDateCreation=Intervenção data de criação diff --git a/htdocs/langs/pt_BR/languages.lang b/htdocs/langs/pt_BR/languages.lang index 9f028b21fdbcedc06f670a8bacc59028f044fef7..4c03fdcccae0d33c1adb13fa29e91aa781ba57a7 100644 --- a/htdocs/langs/pt_BR/languages.lang +++ b/htdocs/langs/pt_BR/languages.lang @@ -1,81 +1,12 @@ # Dolibarr language file - Source file is en_US - languages -Language_ar_AR=Árabe -Language_ar_SA=Árabe -Language_bn_BD=Bengali -Language_bg_BG=Búlgaro -Language_bs_BA=Bósnio -Language_ca_ES=Catalão Language_cs_CZ=Tcheco -Language_da_DA=Dinamarquês -Language_da_DK=Dinamarquês -Language_de_DE=Alemão -Language_de_AT=Alemão (Áustria) Language_de_CH=Alemão (Suíça) -Language_el_GR=Grego -Language_en_AU=Inglês (Austrália) -Language_en_CA=Inglês (Canadá) -Language_en_GB=Inglês (Reino Unido) -Language_en_IN=Inglês (Índia) -Language_en_NZ=Inglês (Nova Zelândia) -Language_en_SA=Inglês (Arábia Saudita) -Language_en_US=Inglês (Estados Unidos) -Language_en_ZA=Inglês (África do Sul) -Language_es_ES=Espanhol -Language_es_AR=Espanhol (Argentina) -Language_es_BO=Espanhol (Bolívia) -Language_es_CL=Espanhol (Chile) Language_es_CO=Espanhol (Colômbia) -Language_es_DO=Espanhol (República Dominicana) -Language_es_HN=Espanhol (Honduras) -Language_es_MX=Espanhol (México) -Language_es_PY=Espanhol (Paraguai) -Language_es_PE=Espanhol (Peru) -Language_es_PR=Espanhol (Porto Rico) -Language_es_VE=Espanhol (Venezuela) Language_et_EE=Estoniano -Language_eu_ES=Basco -Language_fa_IR=Persa -Language_fi_FI=Finlandês -Language_fr_BE=Francês (Bélgica) -Language_fr_CA=Francês (Canadá) -Language_fr_CH=Francês (Suíça) -Language_fr_FR=Francês -Language_fr_NC=Francês (Nova Caledónia) Language_fy_NL=Holandês Language_he_IL=Hebraico -Language_hr_HR=Croata -Language_hu_HU=Húngaro -Language_id_ID=Indonésio -Language_is_IS=Islandês -Language_it_IT=Italiano -Language_ja_JP=Japonês Language_ka_GE=Georgiano -Language_kn_IN=Canarês -Language_ko_KR=Coreano Language_lo_LA=Laosiano -Language_lt_LT=Lituano -Language_lv_LV=Letão Language_mk_MK=Macedônio -Language_nb_NO=Norueguês (Bokmål) -Language_nl_BE=Holandês (Bélgica) Language_nl_NL=Holandês (Holanda) Language_pl_PL=Polonês -Language_pt_BR=Português (Brasil) -Language_pt_PT=Português -Language_ro_RO=Romeno -Language_ru_RU=Russo -Language_ru_UA=Russo (Ucrânia) -Language_tr_TR=Turco -Language_sl_SI=Esloveno -Language_sv_SV=Sueco -Language_sv_SE=Sueco -Language_sq_AL=Albanês -Language_sk_SK=Eslovaco -Language_sr_RS=Sérvio -Language_sw_SW=Suaíli -Language_th_TH=Tailandês -Language_uk_UA=Ucraniano -Language_uz_UZ=Uzbeque -Language_vi_VN=Vietnamita -Language_zh_CN=Chinês -Language_zh_TW=Chinês (Tradicional) diff --git a/htdocs/langs/pt_BR/ldap.lang b/htdocs/langs/pt_BR/ldap.lang index a8153717e9bfefa60d9283f975cf9849b98ce292..3f290642a4bbda578e803be853f1a501dcff357d 100644 --- a/htdocs/langs/pt_BR/ldap.lang +++ b/htdocs/langs/pt_BR/ldap.lang @@ -4,22 +4,10 @@ YouMustChangePassNextLogon=A senha de <b>%s</b> ao domínio <b>%s</b> deve de se UserMustChangePassNextLogon=O usuário deve alterar de senha na próxima login LDAPInformationsForThisContact=Informação da base de dados LDAP deste contato LDAPInformationsForThisUser=Informação da base de dados LDAP deste usuário -LDAPInformationsForThisGroup=Informação da base de dados LDAP deste grupo -LDAPInformationsForThisMember=Informação da base de dados LDAP deste membro -LDAPAttributes=Atributos LDAP -LDAPCard=Ficha LDAP -LDAPRecordNotFound=Registo não encontrado na base de dados LDAP LDAPUsers=Usuário na base de dados LDAP -LDAPFieldStatus=Estatuto -LDAPFieldFirstSubscriptionDate=Data primeira adesão LDAPFieldFirstSubscriptionAmount=Valor da Primeira Adesão LDAPFieldLastSubscriptionDate=Data da Última Adesão LDAPFieldLastSubscriptionAmount=Valor Última Adesão -LDAPFieldSkype=Skype id LDAPFieldSkypeExample=Exemplo : nomeskype UserSynchronized=Usuário Sincronizado -GroupSynchronized=Grupo sincronizado -MemberSynchronized=Membro sincronizado -ContactSynchronized=Contato sincronizado -ForceSynchronize=forçar sincronização Dolibarr -> LDAP ErrorFailedToReadLDAP=Erro na leitura do anuário LDAP. Verificar a configuração do módulo LDAP e a acessibilidade do anuário. diff --git a/htdocs/langs/pt_BR/link.lang b/htdocs/langs/pt_BR/link.lang index ad738807b73e53b1228f18541ff64d820a131b0a..eb57e8c3b2e7eac48254619907d006ea94075321 100644 --- a/htdocs/langs/pt_BR/link.lang +++ b/htdocs/langs/pt_BR/link.lang @@ -1,10 +1,9 @@ -# Dolibarr language file - Source file is en_US - languages +# Dolibarr language file - Source file is en_US - link LinkANewFile=Vincular um novo arquivo/documento LinkedFiles=Arquivos vinculados e documentos NoLinkFound=Não há links registrados LinkComplete=O arquivo foi associada com sucesso ErrorFileNotLinked=O arquivo não pôde ser vinculado -LinkRemoved=A ligação %s foi removida -ErrorFailedToDeleteLink= Falha ao remover link '<b>%s</b>' -ErrorFailedToUpdateLink= Falha ao atualizar link '<b>%s</b>' +ErrorFailedToDeleteLink=Falha ao remover link '<b>%s</b>' +ErrorFailedToUpdateLink=Falha ao atualizar link '<b>%s</b>' URLToLink=URL para link diff --git a/htdocs/langs/pt_BR/loan.lang b/htdocs/langs/pt_BR/loan.lang index bb780efc3358f0edd4156fe0ad97ef9d5c211776..10e65fe5092b0cba6084bdfc3e99f50c97ebca57 100644 --- a/htdocs/langs/pt_BR/loan.lang +++ b/htdocs/langs/pt_BR/loan.lang @@ -1,14 +1,9 @@ # Dolibarr language file - Source file is en_US - loan -Loan=Empréstimo -Loans=Empréstimos NewLoan=Novo empréstimo ShowLoan=Mostrar empréstimo PaymentLoan=Pagamento de empréstimo ShowLoanPayment=Mostrar pagamento de empréstimo -LoanCapital=Capital -Insurance=Seguro Interest=Juro -Nbterms=Número de termos LoanAccountancyCapitalCode=Código Contábil Capital LoanAccountancyInsuranceCode=Código Contábil Seguro LoanAccountancyInterestCode=Código Contábil Juros @@ -16,7 +11,6 @@ ConfirmDeleteLoan=Confirme a exclusão deste empréstimo LoanDeleted=Empréstimo excluído com sucesso ConfirmPayLoan=Confirmar este empréstimo como pago LoanPaid=Empréstimo pago -# Calc LoanCalc=Calculadora de Empréstimos Bancários PurchaseFinanceInfo=Informações de Compras e Financiamentos SalePriceOfAsset=Preço de venda de ativos @@ -36,14 +30,10 @@ MonthlyPaymentDesc=O pagamento mensal é descoberto com a seguinte fórmula AmortizationPaymentDesc=A <a href="#amortization">amortização</a> demonstra o quanto do seu pagamento mensal destina-se a juros do banco e quanto refere-se ao pagamento do pirncipal do seu empréstimo. AmountFinanced=Valor Financiado AmortizationMonthlyPaymentOverYears=Amortização de pagamento mensal: <b>%s%</b>de %s ao longo dos anos -Totalsforyear=Totais para o ano -MonthlyPayment=Pagamento Mensal LoanCalcDesc=Esta <b>calculadora de hipoteca</b> pode ser usada para mostrar os pagamentos mensais de um empréstimo, com base no montante contratado, no prazo desejado para o pagamento e na taxa de juros.<br> Esta calculadora inclui também o PMI (Private Mortgage Insurance - Seguro de Hipoteca Privada) para empréstimos onde mais de 20%% são usados para a entrada. Foram também consideradas as taxas municipais (IPTU), e seus efeitos no pagamento mensal total da hipoteca.<br> GoToInterest=%s será destinado a JUROS GoToPrincipal=%s será destinado ao PRINCIPAL YouWillSpend=Você gastará %s no ano de %s -# Admin -ConfigLoan=Configuração do módulo de empréstimo LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Código Contábil Capital por padrão LOAN_ACCOUNTING_ACCOUNT_INTEREST=Código Contábil Juros por padrão LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Código Contábil Seguros por padrão diff --git a/htdocs/langs/pt_BR/mailmanspip.lang b/htdocs/langs/pt_BR/mailmanspip.lang index 8b4853ad2146f5988d97154afd825dbbdaa86476..bbea232c4ef24e068faac9f4fdc21e114270e2fc 100644 --- a/htdocs/langs/pt_BR/mailmanspip.lang +++ b/htdocs/langs/pt_BR/mailmanspip.lang @@ -12,14 +12,12 @@ DescADHERENT_MAILMAN_URL=URL para inscriçoes Mailman DescADHERENT_MAILMAN_UNSUB_URL=URL para desenscriçoes Mailman DescADHERENT_MAILMAN_LISTS=Lista(s) para inscriçao automatica de novos membros (separado por virgula) SPIPTitle=Gerenciamento do conteudo do sistema SPIP -DescADHERENT_SPIP_SERVEUR=Servidor SPIP DescADHERENT_SPIP_DB=Nome do banco de dados SPIP DescADHERENT_SPIP_USER=Login do banco de dados SPIP DescADHERENT_SPIP_PASS=Senha do banco de dados SPIP AddIntoSpip=Adicionar no SPIP AddIntoSpipConfirmation=Tem certeza que quer adicionar este membro no SPIP ? AddIntoSpipError=Falha em adicionar o usuario no SPIP -DeleteIntoSpip=Remover do SPIP DeleteIntoSpipConfirmation=Tem certeza que quer remover este membro do SPIP ? DeleteIntoSpipError=Falha no suprimir o usuario do SPIP SPIPConnectionFailed=Falha na conexao com o SPIP diff --git a/htdocs/langs/pt_BR/mails.lang b/htdocs/langs/pt_BR/mails.lang index 247400ccfcab1e0b09a23412b930a9cd18034903..c4743f7b3edfea7e482b7f587302002c3f81d319 100644 --- a/htdocs/langs/pt_BR/mails.lang +++ b/htdocs/langs/pt_BR/mails.lang @@ -1,39 +1,15 @@ # Dolibarr language file - Source file is en_US - mails -Mailing=Mailing -EMailing=Mailing -EMailings=Mailings -AllEMailings=Todos os E-Mailings -MailCard=Ficha de Mailing MailRecipients=Dsetinatarios MailRecipient=Destinatário MailTitle=Descrição -MailFrom=Remetente MailErrorsTo=Erros para -MailReply=Responder a MailTo=Destinatário(s) MailCC=Copiar para -MailCCC=Adicionar Cópia a -MailTopic=Assunto do e-mail -MailText=Mensagem MailFile=Arquivos anexados -MailMessage=Mensagem do e-mail -ShowEMailing=Mostrar E-Mailing -ListOfEMailings=Lista de mailings -NewMailing=Novo Mailing -EditMailing=Editar Mailing ResetMailing=Limpar Mailing -DeleteMailing=Eliminar Mailing -DeleteAMailing=Eliminar um Mailing -PreviewMailing=Previsualizar um Mailing -CreateMailing=Criar E-Mailing TestMailing=Testar email -ValidMailing=Confirmar Mailing -MailingStatusDraft=Rascunho -MailingStatusValidated=Validado -MailingStatusSent=Enviado MailingStatusSentPartialy=Enviado parcialmente MailingStatusSentCompletely=Enviado completamente -MailingStatusError=Erro MailingStatusNotSent=Não enviado MailSuccessfulySent=E-mail enviado corretamente (de %s a %s) MailingSuccessfullyValidated=Emailins validado com sucesso @@ -50,9 +26,7 @@ NbOfEMails=N� de E-mails TotalNbOfDistinctRecipients=Número de destinatários únicos NoTargetYet=Nenhum destinatário definido RemoveRecipient=Eliminar destinatário -CommonSubstitutions=Substituições comuns YouCanAddYourOwnPredefindedListHere=Para Criar o seu módulo de seleção e-mails, tem que ir a htdocs/core/modules/mailings/README. -EMailTestSubstitutionReplacedByGenericValues=Em modo teste, as Variávels de substituição são sustituidas por valores genéricos MailingAddFile=Adicionar este Arquivo NoAttachedFiles=Sem arquivos anexos BadEMail=Valor errado para e-mail @@ -62,8 +36,6 @@ CloneContent=Clonar mensagem CloneReceivers=Clonar recebidores DateLastSend=Data do último envio DateSending=Data envio -SentTo=Enviado para <b>%s</b> -MailingStatusRead=Ler YourMailUnsubcribeOK=O e-mail <b>%s</b> foi removido com sucesso da lista ActivateCheckReadKey=Chave usada para criptografar URL usado para "confirmação de leitura" e recurso "Unsubcribe" EMailSentToNRecipients=E-mail enviado para %s destinatarios. @@ -72,33 +44,20 @@ XTargetsAdded=<b>%s </b> destinatários adicionados à lista de destino OnlyPDFattachmentSupported=Se o documento PDF já foi gerado para o objeto a ser enviado, ele será anexado ao e-mail. Se não, nenhum e-mail será (além disso, note que somente os documentos PDF são suportados como anexo no envio em massa nesta versão). AllRecipientSelected=Todos os endereços de e-mails dos representantes selecionados ResultOfMailSending=Resultado de envio em massa de e-mails -NbSelected=Nb selecionado -NbIgnored=Nb ignorado -NbSent=Nb enviado - -# Libelle des modules de liste de destinataires mailing LineInFile=Linha %s em arquivo RecipientSelectionModules=Módulos de seleção dos destinatários MailSelectedRecipients=Destinatários selecionados -MailingArea=Área mailings -LastMailings=Os %s últimos mailings TargetsStatistics=Estatísticas destinatários NbOfCompaniesContacts=Contatos únicos de empresas MailNoChangePossible=Destinatários de um mailing validado não modificaveis -SearchAMailing=Procurar um mailing -SendMailing=Enviar mailing -SendMail=Enviar e-mail MailingNeedCommand=Para razões de segurança, o envio de um mailing em massa e melhor quando feito da linha de comando. Se voce tem uma, pergunte ao seu administrador de serviço de executar o comando seguinte para enviar o mailing em massa a todos os destinatarios: MailingNeedCommand2=Pode enviar em linha adicionando o parâmetro MAILING_LIMIT_SENDBYWEB com um valor número que indica o máximo n� de e-mails enviados por Sessão. ConfirmSendingEmailing=Se você não pode ou prefere enviá-los por meio do seu navegador, favor confirmar que você tem certeza que deseja enviar o e-mail para a lista de e-mails agora a partir do seu navegador. LimitSendingEmailing=Observação: Envios de mailings em massa da interface web são feitas em varias vezes por causa de segurança e tempo limite, <b>%s</b> destinatarios por sessão de envio. -TargetsReset=Limpar lista ToClearAllRecipientsClickHere=Para limpar a lista dos destinatários deste mailing, faça click ao botão ToAddRecipientsChooseHere=Para Adicionar destinatários, escoja os que figuran em listas a continuação NbOfEMailingsReceived=Mailings em massa recebidos NbOfEMailingsSend=E-mails em massa enviados -IdRecord=ID registo -DeliveryReceipt=Recibo de recpção YouCanUseCommaSeparatorForSeveralRecipients=Pode usar o caracter0 de separação <b>coma </b> para especificar multiplos destinatários. TagCheckMail=Seguir quando o e-mail sera lido TagUnsubscribe=Atalho para se desenscrever @@ -106,11 +65,6 @@ TagSignature=Assinatura do remetente EMailRecipient=E-mail destinatario TagMailtoEmail=Destinatário do E-mail (incluindo o link HTML "mailto:") NoEmailSentBadSenderOrRecipientEmail=Nenhum e-mail enviado. Bad remetente ou destinatário de e-mail. Verifique perfil de usuário. -# Module Notifications -Notifications=Notificações -NoNotificationsWillBeSent=Nenhuma notificação por e-mail está prevista para este evento e empresa -ANotificationsWillBeSent=1 notificação vai a ser enviada por e-mail -SomeNotificationsWillBeSent=%s Notificações vão ser enviadas por e-mail AddNewNotification=Ativar uma nova notificação email para alvo ListOfActiveNotifications=Lista de todos os destinatários para a notificação por e-mail ListOfNotificationsDone=Listar todas as notificações de e-mail enviadas @@ -119,27 +73,19 @@ MailSendSetupIs2=Voçê precisa primeiramente acessar com uma conta de Administr MailSendSetupIs3=Se tiver perguntas sobre como configurar o seu servidor SMTP voçê pode perguntar %s. YouCanAlsoUseSupervisorKeyword=Você também pode adicionar a palavra-chave <strong>__SUPERVISOREMAIL__</strong> ter e-mail que está sendo enviado ao supervisor do usuário (só funciona se um email é definido para este supervisor) NbOfTargetedContacts=Número atual de e-mails de contatos direcionados -MailAdvTargetRecipients=Destinatários (seleção avançada) AdvTgtTitle=Preencher os campos de entrada para pré-selecionar os terceiros ou contatos/endereços como destino AdvTgtSearchTextHelp=Use %% como caracteres mágicos. Por exemplo, para encontrar todos os itens como <b>jean, joe, jim</b>, você pode inserir <b>j%%</b>, você também pode usar ; como separador para valores, e usar ! para excluir este valor. Por exemplo <b>jean;joe;jim%%;!jimo;!jima%</b> colocarão todos os jean, joe, como destino, iniciar com jim, mas sem jimo e nem tudo que começa com jima AdvTgtSearchIntHelp=Use o intervalo para selecionar o valor int ou flutuante -AdvTgtMinVal=Valor mínimo -AdvTgtMaxVal=Valor máximo AdvTgtSearchDtHelp=Use o intervalo para selecionar o valor da data AdvTgtStartDt=Data in. AdvTgtEndDt=Data fn. AdvTgtTypeOfIncudeHelp=E-mail de destino de terceiro e e-mail do contato do terceiro, ou apenas o e-mail do terceiro ou apenas o e-mail do contato AdvTgtTypeOfIncude=Tipo de e-mail do destino AdvTgtContactHelp=Usar apenas de você colocou o contato no "Tipo de e-mail de destino" -AddAll=Adicionar tudo -RemoveAll=Remover tudo ItemsCount=Item(ns) AdvTgtNameTemplate=Filtrar nome AdvTgtAddContact=Adicionar e-mails de acordo com os critérios -AdvTgtLoadFilter=Carregar filtro AdvTgtDeleteFilter=Excluir filtro AdvTgtSaveFilter=Salvar filtro -AdvTgtCreateFilter=Criar filtro -AdvTgtOrCreateNewFilter=Nome do novo filtro NoContactWithCategoryFound=Nenhum foi encontrado nenhum contato/endereço com uma categoria NoContactLinkedToThirdpartieWithCategoryFound=Nenhum foi encontrado nenhum contato/endereço com uma categoria diff --git a/htdocs/langs/pt_BR/main.lang b/htdocs/langs/pt_BR/main.lang index c1438c2c9e0817e0fa50fb1e25c13acf7fd2feb7..953a78a6eebe8450a763e56866197870c2bcc0a2 100644 --- a/htdocs/langs/pt_BR/main.lang +++ b/htdocs/langs/pt_BR/main.lang @@ -1,9 +1,5 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr -# Note for Chinese: -# msungstdlight or cid0ct are for traditional Chinese (traditional does not render with Ubuntu pdf reader) -# stsongstdlight or cid0cs are for simplified Chinese -# To read Chinese pdf with Linux: sudo apt-get install poppler-data FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -26,36 +22,23 @@ FormatDateHourText=%d %B, %Y, %I:%M %p DatabaseConnection=Login à Base de Dados NoTemplateDefined=Nenhum tema definido para este tipo de e-mail AvailableVariables=Variáveis de substituição disponíveis -NoTranslation=Sem tradução NoRecordFound=Nenhum registro encontrado -NoRecordDeleted=Nenhum registro foi deletado NotEnoughDataYet=Sem dados suficientes NoError=Sem erro -Error=Erro Errors=Erros -ErrorFieldRequired=O campo '%s' é obrigatório ErrorFieldFormat=O campo '%s' tem um valor incorreto ErrorFileDoesNotExists=O arquivo %s não existe ErrorFailedToOpenFile=Houve uma falha ao abrir o arquivo %s ErrorCanNotCreateDir=Não é possível criar a pasta %s ErrorCanNotReadDir=Não é possível ler a pasta %s -ErrorConstantNotDefined=Parâmetro %s não definido -ErrorUnknown=Erro desconhecido -ErrorSQL=Erro de SQL ErrorLogoFileNotFound=O arquivo logo '%s' não se encontra -ErrorGoToGlobalSetup=Ir á configuração ' Empresa/Instituição ' para corrigir -ErrorGoToModuleSetup=Ir á configuração do módulo para corrigir ErrorFailedToSendMail=Erro ao envio do e-mail (emissor ErrorFileNotUploaded=O arquivo não foi possível transferir -ErrorInternalErrorDetected=Erro detectado -ErrorWrongHostParameter=Parâmetro Servidor inválido ErrorYourCountryIsNotDefined=O seu país não está definido. corrija indo a Configuração-Geral-Editar ErrorRecordIsUsedByChild=Impossível de suprimir este registo. Esta sendo utilizado como pai pelo menos em um registo filho. ErrorWrongValue=Valor incorreto ErrorWrongValueForParameterX=Valor incorreto para o parâmetro %s -ErrorNoRequestInError=Nenhuma petição em erro ErrorServiceUnavailableTryLater=Serviço não disponível no momento. Tente novamente mais tarde. -ErrorDuplicateField=Duplicado num campo único ErrorSomeErrorWereFoundRollbackIsDone=Foram encontrados alguns erros. Alterações revertidas. ErrorConfigParameterNotDefined=O parâmetro <b>%s</b> não está definido ao arquivo de configuração Dolibarr <b>conf.php</b>. ErrorCantLoadUserFromDolibarrDatabase=Impossível encontrar o usuário <b>%s</b> na base de dados do Dolibarr. @@ -63,179 +46,101 @@ ErrorNoVATRateDefinedForSellerCountry=Erro, nenhum tipo de ICMS definido para o ErrorNoSocialContributionForSellerCountry=Erro, nenhum tipo de imposto social / fiscal definidos para o país '%s'. ErrorFailedToSaveFile=Erro, o registo do arquivo falhou. NotAuthorized=Você não está autorizado a fazer isso. -SetDate=Definir data SelectDate=Selecionar uma data SeeAlso=Ver tambem %s SeeHere=veja aqui BackgroundColorByDefault=Cor do fundo padrão FileRenamed=O arquivo foi renomeado com sucesso FileUploaded=O arquivo foi carregado com sucesso -FileGenerated=O arquivo foi gerado com sucesso FileWasNotUploaded=O arquivo foi selecionado, mas nao foi ainda enviado. Clique no "Anexar arquivo" para proceder. NbOfEntries=Nr. de entradas GoToWikiHelpPage=Ler a ajuda online (necessário acesso a Internet) GoToHelpPage=Consulte a ajuda (pode necessitar de acesso à internet) -RecordSaved=Registo Guardado RecordDeleted=Registro apagado LevelOfFeature=Nível de funções -NotDefined=Não Definida DolibarrInHttpAuthenticationSoPasswordUseless=Modo de autenticação do Dolibarr está definido como <b>%s</b> no arquivo de configuração<b>conf.php</b>.<br>Isso significa que o banco de dados das senhas é externo ao Dolibarr, assim mudar este campo, pode não ter efeito. -Administrator=Administrador -Undefined=Não Definido PasswordForgotten=Esqueceu a senha? SeeAbove=Mencionar anteriormente -HomeArea=Área Principal LastConnexion=último login PreviousConnexion=último login PreviousValue=Valor anterior ConnectedOnMultiCompany=Conectado no ambiente -ConnectedSince=Conectado desde AuthenticationMode=Modo de Autenticação RequestedUrl=URL solicitada DatabaseTypeManager=Tipo de gerente de base de dados RequestLastAccessInError=Últimos erros de acesso ao banco de dados ReturnCodeLastAccessInError=Código de retorno do último erro de acesso ao banco de dados InformationLastAccessInError=Informação do último erro de acesso ao banco de dados -DolibarrHasDetectedError=O Dolibarr detectou um erro técnico -InformationToHelpDiagnose=Esta informação pode ser útil para fins de diagnóstico -MoreInformation=Mais Informação -TechnicalInformation=Informação técnica +InformationToHelpDiagnose=Esta informação pode ser útil para fins de diagnóstico TechnicalID=ID Técnico -NotePublic=Nota (pública) -NotePrivate=Nota (privada) PrecisionUnitIsLimitedToXDecimals=Dolibarr está configurado para limitar a precisão dos preços unitários a <b>%s</b> Decimais. -DoTest=Teste -ToFilter=Filtrar NoFilter=Nenhum filtro WarningYouHaveAtLeastOneTaskLate=Atenção, tem um elemento a menos que passou a data de tolerância. yes=sim -Yes=Sim no=não -No=Não -All=Tudo -Home=Inicio -Help=Ajuda OnlineHelp=Ajuda online PageWiki=Pagina wiki MediaBrowser=Navegador de mídia -Always=Sempre -Never=Nunca -Under=Baixo -Period=Periodo PeriodEndDate=Data final periodo Activate=Ativar Activated=Ativado Closed=Encerrado Closed2=Encerrado Enabled=Ativado -Deprecated=Obsoleto Disable=Desativar Disabled=Desativado -Add=Adicionar AddLink=Adicionar link RemoveLink=Remover o link AddToDraft=Adicionar ao rascunho Update=Modificar -Close=Fechar CloseBox=Remover o widget do seu painel de controle -Confirm=Confirmar ConfirmSendCardByMail=Você realmente quer enviar o conteúdo deste cartão por e-mail para <b>%s</b>? Delete=Eliminar Remove=Retirar Resiliate=Concluir -Cancel=Cancelar -Modify=Modificar -Edit=Editar Validate=Confirmar -ValidateAndApprove=Validar e Aprovar ToValidate=A Confirmar -Save=Guardar SaveAs=Guardar como TestConnection=Teste a login ToClone=Cópiar ConfirmClone=Selecciones dados que deseja Cópiar. NoCloneOptionsSpecified=Não existem dados definidos para copiar -Of=de Go=Ir Run=Attivo -CopyOf=Cópia de Show=Ver ShowCardHere=Mostrar cartão -Search=Procurar -SearchOf=Procurar -Valid=Confirmar -Approve=Aprovar -Disapprove=Desaprovar -ReOpen=Reabrir Upload=Enviar Arquivo -ToLink=Link -Select=Selecionar -Choose=Escolher Resize=Modificar tamanho Recenter=Recolocar no centro -Author=Autor User=Usuário Users=Usuário -Group=Grupo -Groups=Grupos NoUserGroupDefined=Nenhum grupo definido pelo usuário -Password=Senha PasswordRetype=Repetir Senha NoteSomeFeaturesAreDisabled=Antenção, só poucos módulos/funcionalidade foram ativados nesta demo -Name=Nome -Person=Pessoa -Parameter=Parâmetro -Parameters=Parâmetros -Value=Valor PersonalValue=Valor Personalizado -NewValue=Novo valor CurrentValue=Valor atual -Code=Código -Type=Tipo -Language=Idioma MultiLanguage=Multi Idioma -Note=Nota -Title=Título -Label=Etiqueta RefOrLabel=Ref. da etiqueta -Info=Log -Family=Familia -Description=Descrição -Designation=Designação -Model=Modelo DefaultModel=Modelo Padrão Action=Ação About=Acerca de -Number=Número NumberByMonth=Numero por mes -AmountByMonth=Valor por mês -Numero=Número Limit=Límite -Limits=Limites Logout=Sair NoLogoutProcessWithAuthMode=No recurso de desconexão aplicativo com modo de autenticação Connection=Login -Setup=Configuração -Alert=Alerta -Previous=Anterior -Next=Seguinte -Cards=Fichas -Card=Ficha Now=Agora HourStart=Comece hora -Date=Data DateAndHour=Data e hora DateToday=Data de hoje DateReference=Data de referência DateStart=Data de início DateEnd=Data de término -DateCreation=Data de Criação DateCreationShort=Data Criação DateModification=Data Modificação DateModificationShort=Data Modif. DateLastModification=Data última Modificação DateValidation=Data Validação -DateClosing=Data de Encerramento DateDue=Data Vencimento DateValue=Data Valor DateValueShort=Data Valor @@ -244,66 +149,20 @@ DateOperationShort=Data Op. DateLimit=Data Límite DateRequest=Data Consulta DateProcess=Data Processo -DateBuild=Data da geração do Relatório -DatePayment=Data de pagamento -DateApprove=Data de aprovação -DateApprove2=Data de aprovação (segunda aprovação) -UserCreation=Criado por UserModification=Alterado por UserCreationShort=Criado por UserModificationShort=Modif. por -DurationYear=Ano -DurationMonth=Mês -DurationWeek=Semana DurationDay=Día -DurationYears=Anos -DurationMonths=Meses -DurationWeeks=Semanas -DurationDays=Dias -Year=Ano -Month=Mês -Week=Semana WeekShort=Semana Day=Día -Hour=Hora -Minute=Minuto -Second=Segundo -Years=Anos -Months=Meses -Days=Dias days=Dias -Hours=Horas -Minutes=Minutos -Seconds=Segundos Weeks=Semandas -Today=Hoje -Yesterday=Ontem -Tomorrow=Amanhã Morning=Manha -Afternoon=Tarde Quadri=Trimistre -MonthOfDay=Dia do mês -HourShort=H -MinuteShort=mn -Rate=Tipo CurrencyRate=Taxa de conversão moeda UseLocalTax=Incluindo taxa -Bytes=Bytes -KiloBytes=Kilobytes -MegaBytes=Megabytes -GigaBytes=Gigabytes -TeraBytes=Terabytes -b=b. -Kb=Kb -Mb=Mb -Gb=Gb -Tb=Tb -Cut=Cortar -Copy=Copiar -Paste=Colar Default=Padrao DefaultValue=Valor por default -Price=Preço UnitPrice=Preço Unit. UnitPriceHT=Preço Base UnitPriceTTC=Preço Unit. Total @@ -328,10 +187,6 @@ AmountLT1ES=Valor RE AmountLT2ES=Valor IRPF AmountTotal=Valor Total AmountAverage=Valor médio -PriceQtyMinHT=Preço quantidade min total -Percentage=Percentagem -Total=Total -SubTotal=Subtotal TotalHTShort=Total (neto) TotalHTShortCurrency=Total (líquido na moeda) TotalTTCShort=Total (incl. taxas) @@ -339,45 +194,23 @@ TotalHT=Valor TotalHTforthispage=Total (sem impostos) desta pagina Totalforthispage=Total para esta página TotalTTC=Total -TotalTTCToYourCredit=Total a crédito TotalVAT=Total do ICMS TotalLT1=Total taxa 2 TotalLT2=Total taxa 3 -TotalLT1ES=Total RE -TotalLT2ES=Total IRPF HT=Sem ICMS TTC=ICMS Incluido VAT=ICMS VATs=Impostos sobre vendas -LT1ES=RE -LT2ES=IRPF VATRate=Taxa ICMS -Average=Média -Sum=Soma -Delta=Divergencia -Module=Módulo -Option=Opção -List=Lista -FullList=Lista Completa -Statistics=Estatísticas OtherStatistics=Outras estatisticas -Status=Estado Favorite=Favorito -ShortInfo=Info. -Ref=Ref. -ExternalRef=Ref. extern RefSupplier=Ref. Fornecedor RefPayment=Ref. Pagamento -CommercialProposalsShort=Orçamentos Comment=Comentario Comments=Comentarios ActionsToDo=Ações a realizar -ActionsToDoShort=A realizar -ActionsDoneShort=Realizadas ActionNotApplicable=Não aplicavel ActionRunningNotStarted=A Iniciar -ActionRunningShort=Iniciado -ActionDoneShort=Terminado ActionUncomplete=Imcompleto CompanyFoundation=Companhia/Fundação ContactsForCompany=Contatos desta empresa @@ -385,243 +218,82 @@ ContactsAddressesForCompany=Contatos/Endereços do Cliente ou Fornecedor AddressesForCompany=Endereços para este terceiro ActionsOnCompany=Ações nesta sociedade ActionsOnMember=Eventos deste membro -NActionsLate=%s em atraso RequestAlreadyDone=Pedido ja registrado -Filter=Filtro FilterOnInto=Critério da pesquisa '<strong>%s</strong>' nos campos %s RemoveFilter=Eliminar filtro -ChartGenerated=Gráficos gerados -ChartNotGenerated=Gráfico não gerado GeneratedOn=Gerado a %s -Generate=Gerar -Duration=Duração -TotalDuration=Duração total -Summary=Resumo -DolibarrStateBoard=Estatísticas -DolibarrWorkBoard=Indicadores de Trabalho Available=Disponivel NotYetAvailable=Ainda não disponível NotAvailable=Não disponível Categories=Tags / categorias Category=Tag / categoria -By=Por -From=De to=para -and=e -or=ou -Other=Outro -Others=Outros -OtherInformations=Outras Informações -Quantity=quantidade -Qty=Quant. -ChangedBy=Modificado por -ApprovedBy=Aprovado por ApprovedBy2=Aprovado pelo (segunda aprovação) -Approved=Aprovado -Refused=Recusado -ReCalculate=Recalcular -ResultKo=Erro -Reporting=Relatório -Reportings=Relatórios -Draft=Rascunho -Drafts=Drafts -Validated=Validado Opened=Aberto -New=Novo -Discount=Desconto -Unknown=Desconhecido -General=General -Size=Tamanho -Received=Recebido -Paid=Pago Topic=Assunto -ByCompanies=Por empresa ByUsers=Por usuário -Links=Links -Link=Link -Rejects=Reprovado -Preview=Preview -NextStep=Passo Seguinte -Datas=Dados -None=Nenhum -NoneF=Nenhuma -Late=Atraso LateDesc=O atraso na definição se o registro é tardio ou não, depende da sua configuração. Peça ao seu Administrador para alterar o atraso no menu Início - Configuração - Alertas. -Photo=Foto -Photos=Fotos -AddPhoto=Adicionar foto DeletePicture=Apagar foto ConfirmDeletePicture=Confirmar eliminação de fotografias -Login=Login CurrentLogin=Login atual -January=Janeiro -February=Fevereiro -March=Março -April=Abril -May=Maio -June=Junho -July=Julho -August=Agosto -September=Setembro -October=Outubro -November=Novembro -December=Dezembro -JanuaryMin=Jan FebruaryMin=Fev -MarchMin=Mar AprilMin=Abr MayMin=Mai -JuneMin=Jun -JulyMin=Jul AugustMin=Ago SeptemberMin=Set OctoberMin=Out -NovemberMin=Nov DecemberMin=Dez -Month01=Janeiro -Month02=Fevereiro -Month03=Março -Month04=Abril -Month05=Maio -Month06=Junho -Month07=Julho -Month08=Agosto -Month09=Setembro -Month10=Outubro -Month11=Novembro -Month12=Dezembro -MonthShort01=Jan MonthShort02=Fev -MonthShort03=Mar MonthShort04=Abr MonthShort05=Mai -MonthShort06=Jun -MonthShort07=Jul MonthShort08=Ago MonthShort09=Set MonthShort10=Out -MonthShort11=Nov MonthShort12=Dez AttachedFiles=Arquivos e Documentos Anexos FileTransferComplete=Foi transferido corretamente o Arquivo -DateFormatYYYYMM=YYYY-MM -DateFormatYYYYMMDD=YYYY-MM-DD -DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS -ReportName=Nome do Relatório ReportPeriod=Periodo de Análise -ReportDescription=Descrição -Report=Relatório Keyword=Palavra-chave -Legend=Legenda Fill=Preencher Reset=Resetar File=Arquivo Files=Arquivos -NotAllowed=Não Autorizado -ReadPermissionNotAllowed=Leitura não Autorizada AmountInCurrency=Valores Apresentados em %s -Example=Exemplo -Examples=Exemplos -NoExample=Sem Exemplo -FindBug=Sinalizar um bug NbOfThirdParties=Numero de Fornecedores -NbOfLines=Numeros de Linhas NbOfObjects=Numero de Objetos NbOfObjectReferers=Número de itens relacionados Referers=Itens correlatos -TotalQuantity=Quantidade Total -DateFromTo=De %s a %s -DateFrom=A partir de %s -DateUntil=Até %s -Check=Verificar Uncheck=Desmarque -Internal=Interno -External=Externo -Internals=Internos -Externals=Externos -Warning=Alerta -Warnings=Alertas -BuildDoc=Gerar o doc -Entity=Entidade Entities=Entidadees CustomerPreview=Historico Cliente SupplierPreview=Historico Fornecedor ShowCustomerPreview=Ver Historico Cliente ShowSupplierPreview=Ver Historico Fornecedor -RefCustomer=Ref. Cliente -Currency=Moeda -InfoAdmin=Informação para os administradores -Undo=Desfazer -Redo=Refazer -ExpandAll=Expandir tudo -UndoExpandAll=Anular Expansão -Reason=Razão -FeatureNotYetSupported=Funcionalidade ainda não suportada -CloseWindow=Fechar Janela -Response=Resposta -Priority=Prioridade SendByMail=Enviado por e-mail -MailSentBy=Mail enviado por -TextUsedInTheMessageBody=Texto utilizado no corpo da mensagem -SendAcknowledgementByMail=Enviar email de confirmação -EMail=E-mail -NoEMail=Sem e-mail NoMobilePhone=Sem celular Owner=Proprietário -FollowingConstantsWillBeSubstituted=As seguintes constantes serão substituidas pelo seu valor correspondente. Refresh=Atualizar -BackToList=Mostar Lista -GoBack=Voltar CanBeModifiedIfOk=Pode modificarse se é valido CanBeModifiedIfKo=Pode modificarse senão é valido ValueIsValid=Valor é válido ValueIsNotValid=Valor inválido -RecordCreatedSuccessfully=Registro criado com sucesso -RecordModifiedSuccessfully=Registo modificado com êxito RecordsModified=%s registros modificados RecordsDeleted=%s registro excluido -AutomaticCode=Criação automática de código FeatureDisabled=Função Desativada MoveBox=Widget de movimento -Offered=Oferta NotEnoughPermissions=Não tem permissões para esta ação -SessionName=Nome Sessão -Method=Método -Receive=Recepção CompleteOrNoMoreReceptionExpected=Completo nada mais a fazer -PartialWoman=Parcial -TotalWoman=Total -NeverReceived=Nunca Recebido -Canceled=Cancelado YouCanChangeValuesForThisListFromDictionarySetup=Voce pode modificar os valores para esta lista no menu Configuração - dicionario YouCanSetDefaultValueInModuleSetup=Você pode definir o valor padrão usado quando da criação de um novo registro na configuração do módulo -Color=Cor -Documents=Documentos -Documents2=Documentos UploadDisabled=Carregamento Desativada -MenuECM=Documentos -MenuAWStats=Estatisticas -MenuMembers=Membros -MenuAgendaGoogle=Agenda Google -ThisLimitIsDefinedInSetup=Límite Dolibarr (menu inicio-configuração-segurança): %s Kb, PHP limit: %s Kb -NoFileFound=Não existem documentos guardados nesta pasta CurrentUserLanguage=Idioma atual CurrentTheme=Tema atual CurrentMenuManager=Administração do menu atual DisabledModules=Módulos desativados -For=Para -ForCustomer=Para cliente -Signature=Assinatura DateOfSignature=Data da assinatura HidePassword=Mostrar comando com senha oculta UnHidePassword=Mostrar comando real com a senha visivel -Root=Raíz -Informations=Informação -Page=Página -Notes=Notas -AddNewLine=Adicionar nova linha AddFile=Adicionar arquivo -FreeZone=Entrada livre FreeLineOfType=Entrada livre de tipo CloneMainAttributes=Clonar o objeto com estes atributos PDFMerge=Fusão de PDF @@ -629,30 +301,19 @@ Merge=Fusão PrintContentArea=Mostrar pagina a se imprimir na area principal MenuManager=Administração do menu WarningYouAreInMaintenanceMode=Atenção, voce esta no modo de manutenção, somente o login <b>%s</b> tem permissões para uso da aplicação no momento. -CoreErrorTitle=Erro de sistema -CoreErrorMessage=Occoreu erro. Verifique os arquivos de log ou contate seu administrador de sistema. +CoreErrorMessage=Occoreu erro. Verifique os arquivos de log ou contate seu administrador de sistema. CreditCard=Cartão de credito FieldsWithAreMandatory=Campos com <b>%s</b> são obrigatorios FieldsWithIsForPublic=Campos com <b>%s</b> são mostrados na lista publica de membros. Se não deseja isto, deselecione a caixa "publico". AccordingToGeoIPDatabase=(conforme a convenção GeoIP) -Line=Linha NotSupported=Não suportado RequiredField=Campo obrigatorio -Result=Resultado -ToTest=Teste ValidateBefore=Precisa de um cartão valido antes de usar esta função -Visibility=Visibilidade -Private=Privado Hidden=Escondido Resources=Resorsas -Source=Fonte -Prefix=Prefixo -Before=Antes -After=Depois IPAddress=endereco IP Frequency=Frequencia IM=Mensagems instantaneas -NewAttribute=Novo atributo AttributeCode=Codigo do atributo URLPhoto=URL da photo/logo SetLinkToAnotherThirdParty=Atalho para outro terceiro @@ -665,31 +326,21 @@ LinkToSupplierProposal=Link para a proposta de Compra LinkToSupplierInvoice=Link para a Fatura de Compra LinkToContract=Link para o Contrato LinkToIntervention=Link para a Intervensão -CreateDraft=Criar Rascunho SetToDraft=Voltar para modo rascunho -ClickToEdit=Clique para editar ObjectDeleted=Objeto %s apagado -ByCountry=Por país -ByTown=Por cidade -ByDate=Por data ByMonthYear=Por mes/ano ByYear=Por ano ByMonth=Por mes ByDay=Por día BySalesRepresentative=Por vendedor representante -LinkedToSpecificUsers=Conectado com um contato particular do usuario -NoResults=Sem resultados +LinkedToSpecificUsers=Conectado com um contato particular do usuario AdminTools=Ferram. admin. -SystemTools=Ferramentas do sistema ModulesSystemTools=Ferramentas de modulos -Test=Teste -Element=Elemento NoPhotoYet=Sem fotos disponiveis no momento Dashboard=Painel de Controle Deductible=Deduzivel from=de toward=para -Access=Acesso SelectAction=Selecionar ação HelpCopyToClipboard=Use Ctrl+C para copiar para o clipboard SaveUploadedFileWithMask=Salvar arquivo no servidor com nome "<strong>%s</strong>" (alternativamente "%s") @@ -705,12 +356,8 @@ SelectElementAndClickRefresh=Selecionar um elemento e clickar atualizar PrintFile=Imprimir arquivo %s ShowTransaction=Mostrar transação na conta bancária GoIntoSetupToChangeLogo=Vá para casa - Configuração - Empresa de mudar logotipo ou ir para casa - Setup - Display para esconder. -Deny=Negar Denied=Negado -ListOfTemplates=Lista de modelos Gender=Gênero -Genderman=Homem -Genderwoman=Mulher ViewList=Exibição de lista Mandatory=Obrigatório Hello=Olá @@ -719,7 +366,6 @@ DeleteLine=Apagar linha ConfirmDeleteLine=Você tem certeza que deseja excluir esta linha? NoPDFAvailableForDocGenAmongChecked=Nenhum PDF estava disponível para a geração do documento entre os registros verificados TooManyRecordForMassAction=Muitos registros selecionados para a ação em massa. A ação é restrita a uma lista de %s registros. -NoRecordSelected=Nenhum registro selecionado MassFilesArea=Área para os arquivos gerados pelas ações em massa ShowTempMassFilesArea=Exibir área dos arquivos gerados pelas ações em massa RelatedObjects=Objetos Relacionados @@ -729,46 +375,10 @@ ClickHere=Clickque aqui FrontOffice=Frente do escritório BackOffice=Fundo do escritório View=Visão -Export=Exportar -Exports=Exportações -ExportFilteredList=Exportar lista filtrada -ExportList=Exportar lista -Miscellaneous=Variados -Calendar=Calendário -GroupBy=Agrupar por -ViewFlatList=Visão da lista resumida -# Week day -Monday=Segunda-feira -Tuesday=Terça-feira -Wednesday=Quarta-feira -Thursday=Quinta-feira -Friday=Sexta-feira Saturday=Sabado -Sunday=Domingo -MondayMin=Seg -TuesdayMin=Ter -WednesdayMin=Qua -ThursdayMin=Qui -FridayMin=Sex SaturdayMin=Sab -SundayMin=Dom -Day1=Segunda-Feira -Day2=Terça-Feira -Day3=Quarta-Feira -Day4=Quinta-Feira -Day5=Sexta-Feria -Day6=Sábado -Day0=Domingo -ShortMonday=Seg -ShortTuesday=Ter -ShortWednesday=Qua -ShortThursday=Qui -ShortFriday=Sex -ShortSaturday=Sab -ShortSunday=Dom SelectMailModel=Escolha um modelo de e-mail SetRef=Escolher referência -Select2ResultFoundUseArrows=Alguns resultados encontrados. Use as setas para selecionar. Select2NotFound=Nenhum resultado encontrado Select2Enter=Forneça Select2MoreCharacter=ou mais caracteres diff --git a/htdocs/langs/pt_BR/margins.lang b/htdocs/langs/pt_BR/margins.lang index 521f1f911ab7a2d849622b2e584bdaca349ef18e..a3d74fa8b547b713cca2c1b1d04835afdfa122be 100644 --- a/htdocs/langs/pt_BR/margins.lang +++ b/htdocs/langs/pt_BR/margins.lang @@ -1,10 +1,4 @@ -# Dolibarr language file - Source file is en_US - marges - -Margin=Margem -Margins=Margens -TotalMargin=Margem total -MarginOnProducts=Margem / Produtos -MarginOnServices=Margem / Serviços +# Dolibarr language file - Source file is en_US - margins MarginRate=Relação margem-preço de compra MarkRate=Relação margem-preço de venda DisplayMarginRates=Exibir relações margem-preço de compra @@ -12,29 +6,20 @@ DisplayMarkRates=Exibir relações margem-preço de venda InputPrice=Preço de entrada margin=Gestão de margens de lucro margesSetup=Configuração das margens de lucro -MarginDetails=Detalhes da margem ProductMargins=Margens de produtos CustomerMargins=Margems de clientes SalesRepresentativeMargins=Tolerância aos representante de vendas UserMargins=Margens do usuário ProductService=Produto ou serviço -AllProducts=Todos os produtos e serviços -ChooseProduct/Service=Escolher produto ou serviço ForceBuyingPriceIfNull=Compra Força preço / custo para o preço de venda se não definido ForceBuyingPriceIfNullDetails=Se o preço de compra / custo não definido, e essa opção "ON", a margem será zero em linha (compra / preço = custo preço de venda), caso contrário ("OFF"), marge será igual ao padrão sugerido. MARGIN_METHODE_FOR_DISCOUNT=Metodologia de margem para descontos globais -UseDiscountAsProduct=Como um produto -UseDiscountAsService=Como um serviço -UseDiscountOnTotal=No subtotal MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Define se um desconto global e tratado como o produto, serviço, ou somente sob o sub-total na margem. MARGIN_TYPE=Compra / Preço de custo sugerido por padrão para cálculo da margem de MargeType1=Margem de melhor preço com fornecedor MargeType2=Margem sobre o Preço Médio Ponderado (PMP) MargeType3=Margem sobre o preço de custo MarginTypeDesc=* Margem de melhor preço de compra = Preço de venda - o melhor preço com fornecedor definido na ficha de produto <br> * margem sobre o preço médio ponderado (WAP) = Preço de VENDA - produto Preço Médio Ponderado (WAP) ou melhor preço de fornecedor se WAP ainda não definido <br> * Margem sobre o preço de custo = preço de VENDA - preço de custo definido na ficha de produto ou WAP se o preço de custo não definido, ou melhor preço fornecedor, se ainda não WAP definido -CostPrice=Preço de custo -UnitCharges=Custos unitários -Charges=Custos AgentContactType=Tipo contato do agente comercial AgentContactTypeDetails=Defina o tipo de contato (conectado coma as faturas) sera usado para o relatorio de margem dos representantes rateMustBeNumeric=Rata deve ser um valor numerico diff --git a/htdocs/langs/pt_BR/members.lang b/htdocs/langs/pt_BR/members.lang index 19d6f6fb4ae8e1019da1122184140686f2281c12..1838298905d7e4be4e21f8e905b5f10896047ee4 100644 --- a/htdocs/langs/pt_BR/members.lang +++ b/htdocs/langs/pt_BR/members.lang @@ -9,81 +9,47 @@ UserNotLinkedToMember=Usuário não vinculado a um associado ThirdpartyNotLinkedToMember=Fornecedores não ligados a um membro MembersTickets=Etiquetas de associado FundationMembers=Membros da fundação -ListOfValidatedPublicMembers=Lista de Membros públicos validados -ErrorThisMemberIsNotPublic=Este membro não é público ErrorMemberIsAlreadyLinkedToThisThirdParty=Outro membro já está vinculado a um terceiro. Remover este link em primeiro lugar porque um terceiro não pode ser ligado a apenas um membro (e vice-versa). ErrorUserPermissionAllowsToLinksToItselfOnly=Por razões de segurança, você deve ter permissões para editar todos os usuários sejam capazes de ligar um membro a um usuário que não é seu. ThisIsContentOfYourCard=Este é os detalhes do seu cartão CardContent=Conteúdo da sua ficha de membro -SetLinkToUser=Link para um usuário Dolibarr SetLinkToThirdParty=Link para um fornecedor Dolibarr -MembersCards=Cartões de Membros -MembersList=Lista de Membros -MembersListToValid=Lista de Membros rascunho (a Confirmar) -MembersListValid=Lista de Membros validados MembersListUpToDate=Lista dos Membros válidos ao día de adesão MembersListNotUpToDate=Lista dos Membros válidos não ao día de adesão MembersListResiliated=Lista de membros encerrados -MembersListQualified=Lista dos Membros qualificados -MenuMembersToValidate=Membros rascunho -MenuMembersValidated=Membros validados MenuMembersUpToDate=Membros ao día MenuMembersNotUpToDate=Membros não ao día MenuMembersResiliated=Membros encerrados -MembersWithSubscriptionToReceive=Membros com assinatura para receber DateSubscription=data filiação DateEndSubscription=data final filiação EndSubscription=fim filiação SubscriptionId=Id adesão MemberId=Id adesão -NewMember=Novo membro -MemberType=Tipo de Membro -MemberTypeId=ID tipo de membro -MemberTypeLabel=Etiqueta tipo de membro -MembersTypes=Tipos de Membros MemberStatusDraft=rascunho (a Confirmar) -MemberStatusDraftShort=A Confirmar -MemberStatusActive=Validado (em espera de filiação ) -MemberStatusActiveShort=Validado MemberStatusActiveLate=filiação não à día MemberStatusActiveLateShort=não à día MemberStatusPaid=Assinatura em dia MemberStatusPaidShort=Até à data MemberStatusResiliated=Membro encerrado MemberStatusResiliatedShort=Encerrado -MembersStatusToValid=Membros rascunho MembersStatusResiliated=Membros encerrados -NewCotisation=Nova filiação PaymentSubscription=Subscrição de Pagamento SubscriptionEndDate=data final filiação -MembersTypeSetup=configuração dos tipos de Membros -NewSubscription=Nova filiação NewSubscriptionDesc=Este formulário permite que você grave a sua assinatura como um novo membro da fundação. Se você quiser renovar a sua assinatura (se já for membro), por favor, entre em contato com Conselho de Fundadores não por e-mail. -Subscription=Filiação Subscriptions=Filiações SubscriptionLate=Em Atraso SubscriptionNotReceived=filiação não recibida ListOfSubscriptions=Lista de Filiações -SendCardByMail=Enviar ficha AddMember=Criar membro NoTypeDefinedGoToSetup=nenhum tipo de membro definido. ir a configuração -> Tipos de Membros -NewMemberType=Novo tipo de membro -WelcomeEMail=E-mail -SubscriptionRequired=Sujeito a cotação -DeleteType=Eliminar -VoteAllowed=Voto autorizado Physical=Físico -Moral=Moral MorPhy=Moral/Físico Reenable=Reativar ResiliateMember=Encerrar um membro ConfirmResiliateMember=Você tem certeza que deseja encerrar este membro? -DeleteMember=Eliminar um membro ConfirmDeleteMember=Você tem certeza que deseja excluir este membro (a exclusão de um membro excluirá todas as suas assinaturas)? -DeleteSubscription=Eliminar uma filiação ConfirmDeleteSubscription=Você tem certeza que deseja excluir esta assinatura? Filehtpasswd=Arquivo htpasswd -ValidateMember=Confirmar um membro ConfirmValidateMember=Você tem certeza que deseja validar este membro? FollowingLinksArePublic=os vínculos seguintes são páginas acessiveis a todos e não protegidas por Nenhuma habilitação Dolibarr. PublicMemberList=Lista público de Membros @@ -91,58 +57,28 @@ BlankSubscriptionForm=Formulário de inscrição BlankSubscriptionFormDesc=Dolibarr pode fornecer uma URL pública para permitir que os visitantes externos de pedir para se inscrever para a fundação. Se um módulo de pagamento on-line estiver ativado, uma forma de pagamento também será fornecido automaticamente. EnablePublicSubscriptionForm=Habilite a forma pública auto-assinatura ExportDataset_member_1=Membros e Filiações -ImportDataset_member_1=Membros LastMembersModified=Últimos %s membros modificados LastSubscriptionsModified=Últimas %s subscrições modificadas -String=Cadeia -Text=Texto largo -Int=Numérico -DateAndTime=data e hora -PublicMemberCard=Ficha pública membro SubscriptionNotRecorded=Subscrição não registrada AddSubscription=Criar subscripção -ShowSubscription=Mostrar filiação -SendAnEMailToMember=Enviar e-mail de informação à membro (E-mail: <b>%s</b>) -DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Assunto do e-mail recebido em caso de auto-inscrição de um convidado -DescADHERENT_AUTOREGISTER_NOTIF_MAIL=E-mail recebido em caso de auto-inscrição de um convidado DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=Assunto do email em caso de inscrição automática DescADHERENT_AUTOREGISTER_MAIL=Email a enviar em caso de convite para inscrição automática -DescADHERENT_MAIL_VALID_SUBJECT=assunto do e-mail de validação de membro -DescADHERENT_MAIL_VALID=E-mail de validação de membro -DescADHERENT_MAIL_COTIS_SUBJECT=assunto do e-mail de validação de cotação -DescADHERENT_MAIL_COTIS=E-mail de validação de uma filiação -DescADHERENT_MAIL_RESIL_SUBJECT=assunto de e-mail de baixa -DescADHERENT_MAIL_RESIL=E-mail de baixa -DescADHERENT_MAIL_FROM=E-mail emissor para os e-mails automáticos -DescADHERENT_ETIQUETTE_TYPE=Formato etiquetas DescADHERENT_ETIQUETTE_TEXT=Texto impresso em folhas de endereço de membros DescADHERENT_CARD_TYPE=Formato da página fichas -DescADHERENT_CARD_HEADER_TEXT=Texto a imprimir na parte superior do cartão de membro -DescADHERENT_CARD_TEXT=Texto a imprimir ao cartão de membro DescADHERENT_CARD_TEXT_RIGHT=Texto impresso em cartões de membros (alinhar à direita) -DescADHERENT_CARD_FOOTER_TEXT=Texto a imprimir na parte inferior do cartão de membro -ShowTypeCard=Ver tipo '%s' HTPasswordExport=geração Arquivo htpassword NoThirdPartyAssociatedToMember=nenhum Fornecedor associado a este membro -MembersAndSubscriptions= Membros e Subscrições +MembersAndSubscriptions=Membros e Subscrições MoreActions=Ação complementar em gravação MoreActionsOnSubscription=Ação complementar, sugerido por padrão durante a gravação de uma assinatura -MoreActionBankDirect=Criar um registro de transação direto na conta -MoreActionBankViaInvoice=Criar uma fatura e pagamento por conta -MoreActionInvoiceOnly=Criar uma fatura sem pagamento LinkToGeneratedPages=Gerar cartões de visitas LinkToGeneratedPagesDesc=Esta tela permite gerar arquivos PDF com cartões de visita para todos os seus membros ou um membro particular. DocForAllMembersCards=Gerar cartões de visita para todos os membros DocForOneMemberCards=Gerar cartões de visita para um determinado membro DocForLabels=Gerar folhas de endereço -SubscriptionPayment=Pagamento Assinatura LastSubscriptionDate=Data da Última Adesão LastSubscriptionAmount=Valor Última Adesão -MembersStatisticsByCountries=Membros estatísticas por país -MembersStatisticsByState=Membros estatísticas por estado / província -MembersStatisticsByTown=Membros estatísticas por cidade MembersStatisticsByRegion=Membros por região estatísticas -NbOfMembers=Número de membros NoValidatedMemberYet=Nenhum membro validados encontrado MembersByCountryDesc=Esta tela mostrará estatísticas sobre usuários por países. Gráfico depende, contudo, do Google serviço gráfico on-line e está disponível apenas se uma conexão à Internet é está funcionando. MembersByStateDesc=Esta tela mostrará estatísticas sobre usuários por estado / província / cantão. @@ -154,11 +90,8 @@ Nature=Tipo de produto Public=Informações são públicas NewMemberbyWeb=Novo membro adicionado. Aguardando aprovação NewMemberForm=Formulário para novo membro -SubscriptionsStatistics=Estatísticas sobre assinaturas NbOfSubscriptions=Número de inscrições -AmountOfSubscriptions=Quantidade de assinaturas TurnoverOrBudget=Volume de negócios (para uma empresa) ou de orçamento (para uma fundação) -DefaultAmount=Quantidade padrão de assinatura CanEditAmount=Visitante pode escolher/editar quantidade da sua subscrição MEMBER_NEWFORM_PAYONLINE=Ir na página de pagamento online integrado ByProperties=Por características diff --git a/htdocs/langs/pt_BR/opensurvey.lang b/htdocs/langs/pt_BR/opensurvey.lang index 20b5fcf0233424d0f1e92e4ce068c3dd21bd9de7..c7b097c44ba9c43e75462f8d3a0b341637d747d2 100644 --- a/htdocs/langs/pt_BR/opensurvey.lang +++ b/htdocs/langs/pt_BR/opensurvey.lang @@ -5,7 +5,6 @@ OrganizeYourMeetingEasily=Organize suas reuniões e enquetes facilmente. Em prim NewSurvey=Nova enquete OpenSurveyArea=Área de enquetes AddACommentForPoll=Você pode adicionar um comentário na enquete... -AddComment=Adicionar comentário CreatePoll=Criar uma enquete PollTitle=Titulo da enquete ToReceiveEMailForEachVote=Receba um e-mail a cada novo voto @@ -15,12 +14,9 @@ OpenSurveyStep2=Selecione os dias livres (cinza). Os dias escolhidos são verdes RemoveAllDays=Remova todos os dias CopyHoursOfFirstDay=Copiar horários do primeiro dia RemoveAllHours=Apagar todos os horários -SelectedDays=Dias selecionados TheBestChoice=A melhor escolha no momento é TheBestChoices=As melhores escolhas no momento são -with=com OpenSurveyHowTo=Se você quiser votar nesta enquete, você tem que preencher o seu nome, escolha as opções que se encaixam melhor para você e confirme com o botão de mais no final da linha. -CommentsOfVoters=Comentários dos votantes ConfirmRemovalOfPoll=Você tem certeza que deseja remover esta enquete (e todos os votos) RemovePoll=Remover enquete UrlForSurvey=URL para obter um acesso direto à pesquisa @@ -30,27 +26,20 @@ CreateSurveyStandard=Criar uma enquete padrão CheckBox=Caixa de resposta simples YesNoList=Escolher (nulo/sim/não) PourContreList=Escolher (nulo/a favor/contra) -AddNewColumn=Adicionar nova coluna -TitleChoice= Escolha a resposta +TitleChoice=Escolha a resposta ExportSpreadsheet=Exportar resultado para planilha -ExpireDate=Data Limite NbOfSurveys=Número de enquetes NbOfVoters=Nr. de eleitores SurveyResults=Resultado PollAdminDesc=Você está autorizado a alterar todas as linhas da votação desta enquete, com o botão "Editar". Você pode, também remover uma coluna ou uma linha com o %s. Você também pode adicionar uma nova coluna com o %s. -5MoreChoices=Mais 5 opções -Against=Contra YouAreInivitedToVote=Você foi convidado para votar nesta enquete VoteNameAlreadyExists=Este nome já foi usada na enquete -AddADate=Adicionar uma data -AddStartHour=Adicionar hora de início AddEndHour=Adicionar hora final votes=voto(s) NoCommentYet=Nenhum comentário foi publicado para este voto ainda CanComment=Os eleitores podem comentar na enquete CanSeeOthersVote=Os eleitores podem ver os votos de outras pessoas SelectDayDesc=Em cada dia selecionado, você pode escolher ou não preencher os horários com o seguinte formato:<br>- vazio,<br>- "8h", "8H" ou "08:00" horário de início da reunião, <br>- "8-11", "8h-11h", "8H-11H" ou "8:00-11:00" horário de início da reunião e do termino,<br> - "8h15-11h15", "8h15-11H15 " ou " 8:15-11:15 " mesma funcionalidade, mas com preenchimento dos minutos. -BackToCurrentMonth=Voltar para o mês atual ErrorOpenSurveyFillFirstSection=Você não preencheu o primeiro passo para criação da enquete ErrorOpenSurveyOneChoice=Digite pelo menos uma opção ErrorInsertingComment=Houve um erro ao inserir o seu comentário diff --git a/htdocs/langs/pt_BR/orders.lang b/htdocs/langs/pt_BR/orders.lang index 96d5caf44676e6837b7e4e45cb68ac51531da28f..1e37cd4575f73c7450a39132b07448a3d3be3eac 100644 --- a/htdocs/langs/pt_BR/orders.lang +++ b/htdocs/langs/pt_BR/orders.lang @@ -1,20 +1,9 @@ # Dolibarr language file - Source file is en_US - orders OrdersArea=Área de Pedidos de Clientes -SuppliersOrdersArea=Área de Pedidos a Fornecedores -OrderCard=Ficha Pedido OrderId=ID Pedido -Order=Pedido -Orders=Pedidos OrderLine=Linha de Comando -OrderDate=Data Pedido OrderDateShort=Data do pedido OrderToProcess=Pedido a processar -NewOrder=Novo Pedido -ToOrder=Realizar Pedido -MakeOrder=Realizar Pedido -SupplierOrder=Pedido a Fornecedor -SuppliersOrders=Pedidos a Fornecedores -SuppliersOrdersRunning=Pedidos a Fornecedores em Curso CustomerOrder=Pedido de Cliente CustomersOrders=Pedidos de clientes CustomersOrdersRunning=Pedidos dos clientes atuais @@ -23,52 +12,29 @@ OrdersToBill=Pedidos dos clientes entregue OrdersInProcess=Pedidos de cliente em processo OrdersToProcess=Pedidos de cliente a processar SuppliersOrdersToProcess=Pedidos a fornecedor a processar -StatusOrderCanceledShort=Anulado -StatusOrderDraftShort=Rascunho -StatusOrderValidatedShort=Validado StatusOrderSentShort=Em processo StatusOrderSent=Entrega encaminhada StatusOrderOnProcessShort=Pedido -StatusOrderProcessedShort=Processado StatusOrderDelivered=Entregue StatusOrderDeliveredShort=Entregue StatusOrderToBillShort=Entregue -StatusOrderApprovedShort=Aprovado -StatusOrderRefusedShort=Reprovado StatusOrderBilledShort=Faturado StatusOrderToProcessShort=A processar -StatusOrderReceivedPartiallyShort=Recebido Parcialmente -StatusOrderReceivedAllShort=Recebido -StatusOrderCanceled=Anulado -StatusOrderDraft=Rascunho (a Confirmar) -StatusOrderValidated=Validado StatusOrderOnProcess=Pedido - Aguardando Recebimento StatusOrderOnProcessWithValidation=Ordenada - recepção Standby ou validação -StatusOrderProcessed=Processado StatusOrderToBill=A Faturar -StatusOrderApproved=Aprovado -StatusOrderRefused=Reprovado StatusOrderBilled=Faturado -StatusOrderReceivedPartially=Recebido Parcialmente -StatusOrderReceivedAll=Recebido ShippingExist=Existe envio ProductQtyInDraft=Quantidade do produto em projetos de ordens ProductQtyInDraftOrWaitingApproved=Quantidade do produto em projecto ou ordens aprovadas, ainda não ordenou MenuOrdersToBill=Pedidos por Faturar MenuOrdersToBill2=Ordens faturáveis -ShipProduct=Enviar Produto -CreateOrder=Criar Pedido -RefuseOrder=Rejeitar o Pedido ApproveOrder=Aprovar pedidos Approve2Order=Aprovar pedido (segundo nível) -ValidateOrder=Confirmar o Pedido UnvalidateOrder=Desaprovar pedido -DeleteOrder=Eliminar o pedido -CancelOrder=Anular o Pedido -OrderReopened= Pedido %s Reaberto +OrderReopened=Pedido %s Reaberto AddOrder=Criar ordem AddToDraftOrders=Adicionar a projeto de pedido -ShowOrder=Mostrar Pedido OrdersOpened=Pedidos a processar NoDraftOrders=Não há projetos de pedidos NoOrder=Sem pedidos @@ -77,14 +43,7 @@ LastOrders=Últimos %s pedidos de cliente LastCustomerOrders=Últimos %s pedidos de cliente LastSupplierOrders=Últimos %s pedidos a fornecedores LastModifiedOrders=Últimos %s pedidos modificados -AllOrders=Todos os Pedidos -NbOfOrders=Número de Pedidos -OrdersStatistics=Estatísticas de pedidos -OrdersStatisticsSuppliers=Estatísticas de Pedidos a Fornecedores -NumberOfOrdersByMonth=Número de Pedidos por Mês AmountOfOrdersByMonthHT=Numero de pedidos por mes (sem impostos) -ListOfOrders=Lista de Pedidos -CloseOrder=Fechar Pedido ConfirmCloseOrder=Você tem certeza que deseja definir este pedido como entregue? Uma vez entregue o pedido, o mesmo pode ser definido como cobrado. ConfirmDeleteOrder=Você tem certeza que deseja excluir este pedido? ConfirmValidateOrder=Você tem certeza que deseja validar este pedido sob o nome <b>%s</b>? @@ -93,19 +52,12 @@ ConfirmCancelOrder=Você tem certeza que deseja cancelar este pedido? ConfirmMakeOrder=Você tem certeza que deseja confirmar que fez este pedido em <b>%s</b>? GenerateBill=Faturar ClassifyShipped=Clasificar entregue -DraftOrders=Rascunhos de Pedidos DraftSuppliersOrders=Rascunho de pedidos para fornecedor -OnProcessOrders=Pedidos em Processo -RefOrder=Ref. Pedido RefCustomerOrder=Ref. pedido por cliente RefOrderSupplier=Ref. ordem por fonecedor -SendOrderByMail=Enviar pedido por e-mail ActionsOnOrder=Ações sobre o pedido NoArticleOfTypeProduct=Não existe artigos de tipo 'produto' e por tanto expedidos neste pedido -OrderMode=Método de pedido -AuthorRequest=Autor/Solicitante UserWithApproveOrderGrant=Usuários autorizados a aprovar os pedidos. -PaymentOrderRef=Pagamento de Pedido %s CloneOrder=Copiar o Pedido ConfirmCloneOrder=Você tem certeza que deseja clonar este pedido, o <b>%s</b>? DispatchSupplierOrder=Receber pedido de fornecedor %s @@ -114,7 +66,6 @@ SecondApprovalAlreadyDone=Segundo aprovação já feito SupplierOrderReceivedInDolibarr=Pedido a fornecedor %s recebido %s SupplierOrderSubmitedInDolibarr=Pedido a fornecedor %s submetido SupplierOrderClassifiedBilled=Pedido a fornecedor %s conjunto faturado -##### Types de contacts ##### TypeContact_commande_internal_SALESREPFOLL=Responsável do seguimento do pedido do cliente TypeContact_commande_internal_SHIPPING=Representante seguindo o envio TypeContact_commande_external_BILLING=Contato fatura cliente @@ -125,29 +76,12 @@ TypeContact_order_supplier_internal_SHIPPING=Representante seguindo o envio TypeContact_order_supplier_external_BILLING=Contato fatura fornecedor TypeContact_order_supplier_external_SHIPPING=Contato envio fornecedor TypeContact_order_supplier_external_CUSTOMER=Contato fornecedor seguindo o pedido - -Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constante COMMANDE_SUPPLIER_ADDON não definida -Error_COMMANDE_ADDON_NotDefined=Constante COMMANDE_ADDON não definida Error_OrderNotChecked=Nenhum pedido seleçionado para se faturar -# Sources -OrderSource0=Orçamento Proposto -OrderSource1=Internet -OrderSource2=Campanha por correio OrderSource3=Campanha telefônica -OrderSource4=Campanha por fax -OrderSource5=Comercial -OrderSource6=Revistas -QtyOrdered=Quant. Pedida -# Documents models PDFEinsteinDescription=Modelo de pedido completo (logo...) PDFEdisonDescription=O modelo simplificado do pedido PDFProformaDescription=A proforma fatura completa (logomarca...) -# Orders modes -OrderByMail=Correio -OrderByFax=Fax OrderByEMail=E-mail -OrderByWWW=Online -OrderByPhone=Telefone CreateInvoiceForThisCustomer=Faturar pedidos NoOrdersToInvoice=Nenhum pedido faturavel CloseProcessedOrdersAutomatically=Classificar como "processados" todos os pedidos selecionados. diff --git a/htdocs/langs/pt_BR/other.lang b/htdocs/langs/pt_BR/other.lang index 174948a5dd89f87973bc209ed0fd95c08c31bf87..1dde195264457ce3cea077fccd1fe7b0132fcd5d 100644 --- a/htdocs/langs/pt_BR/other.lang +++ b/htdocs/langs/pt_BR/other.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - other SecurityCode=Código de segurança -NumberingShort=N° Tools=Ferramentas ToolsDesc=Todas as diversas ferramentas não incluídas em outras entradas de menu estão aqui coligidas.<br /><br />Todas as ferramentas podem ser acessadas a partir do menu esquerdo. Birthday=Aniversário @@ -24,7 +23,6 @@ Notify_PROPAL_SENTBYMAIL=Proposta comercial enviada por e-mail Notify_WITHDRAW_TRANSMIT=Revogação de transmissão Notify_WITHDRAW_CREDIT=Revogação de credito Notify_WITHDRAW_EMIT=Revogação de performance -Notify_COMPANY_CREATE=Terceiro criado Notify_COMPANY_SENTBYMAIL=E-mails enviados a partir do cartão de terceiros Notify_BILL_VALIDATE=Fatura de cliente confirmada Notify_BILL_UNVALIDATE=Fatura de cliente anulada @@ -35,12 +33,9 @@ Notify_BILL_SUPPLIER_VALIDATE=Fatura fornecedor validada Notify_BILL_SUPPLIER_PAYED=Fatura fornecedor paga Notify_BILL_SUPPLIER_SENTBYMAIL=Fatura fornecedor enviada por e-mail Notify_BILL_SUPPLIER_CANCELED=Fornecedor fatura cancelada -Notify_CONTRACT_VALIDATE=Contrato validado Notify_FICHEINTER_VALIDATE=Intervenção validada Notify_SHIPPING_VALIDATE=Envio validado Notify_SHIPPING_SENTBYMAIL=Envio enviado por e-mail -Notify_MEMBER_VALIDATE=Membro validado -Notify_MEMBER_MODIFY=Membro modificado Notify_MEMBER_SUBSCRIPTION=Membro inscrito Notify_MEMBER_RESILIATE=Membro encerrado Notify_MEMBER_DELETE=Membro apagado @@ -51,7 +46,6 @@ Notify_TASK_DELETE=Tarefa excluída SeeModuleSetup=Veja configuração do módulo %s NbOfAttachedFiles=Número Arquivos/Documentos Anexos TotalSizeOfAttachedFiles=Tamanho Total dos Arquivos/Documentos Anexos -MaxSize=Tamanho Máximo AttachANewFile=Adicionar Novo Arquivo/Documento LinkedObject=Arquivo Anexo NbOfActiveNotifications=Número de notificações (nb de e-mails de destinatários) @@ -75,9 +69,6 @@ DemoCompanyServiceOnly=Administração de um trabalhador por conta propia realiz DemoCompanyShopWithCashDesk=Administração de uma loja com Caixa DemoCompanyProductAndStocks=Administração de uma PYME com venda de produtos DemoCompanyAll=Administração de uma PYME com Atividades multiplos (todos Os módulos principais) -CreatedBy=Criado por %s -ModifiedBy=Modificado por %s -ValidatedBy=Validado por %s ClosedBy=Encerrado por %s CreatedById=Id usuario que criou ModifiedById=ID do usuário que fez a última mudança @@ -93,59 +84,17 @@ FileWasRemoved=o Arquivo foi eliminado DirWasRemoved=a pasta foi eliminado FeatureNotYetAvailable=Funcionalidade ainda não disponível na versão atual FeaturesSupported=Funcionalidades suportadas -Width=Largura -Height=Altura -Depth=Fundo -Top=Topo -Bottom=Fundo Left=Esquerda Right=Direita -CalculatedWeight=Peso calculado -CalculatedVolume=Volume calculado -Weight=Peso WeightUnitton=tonelada -WeightUnitkg=kg -WeightUnitg=g -WeightUnitmg=mg -WeightUnitpound=libra -Length=Comprimento -LengthUnitm=m -LengthUnitdm=dm -LengthUnitcm=cm -LengthUnitmm=mm -Surface=Area -SurfaceUnitm2=m² -SurfaceUnitdm2=dm² -SurfaceUnitcm2=cm² -SurfaceUnitmm2=mm² -SurfaceUnitfoot2=ft² -SurfaceUnitinch2=in² -Volume=Volume -VolumeUnitm3=m³ -VolumeUnitdm3=dm³ (L) -VolumeUnitcm3=cm³ (ml) -VolumeUnitmm3=mm³ (µl) -VolumeUnitfoot3=ft³ -VolumeUnitinch3=in³ -VolumeUnitounce=onça -VolumeUnitlitre=litro VolumeUnitgallon=gallão -SizeUnitm=m -SizeUnitdm=dm -SizeUnitcm=cm -SizeUnitmm=mm -SizeUnitinch=polegada SizeUnitfoot=pe -SizeUnitpoint=ponto BugTracker=Incidências SendNewPasswordDesc=Este formulário permite que você solicite uma nova senha. Ela será enviada para o seu endereço de e-mail.<br />A alteração irá vigorar assim que você clicar no link de confirmação no e-mail.<br />Verifique sua caixa de entrada. BackToLoginPage=Voltar e a página de login AuthenticationDoesNotAllowSendNewPassword=O modo de autenticação é <b>%s</b>.<br />Neste modo, o Dolibarr não pode saber e nem alterar a sua senha.<br />Entre em contato com o seu Administrador se você deseja alterar a sua senha. EnableGDLibraryDesc=Instale ou ative a biblioteca GD da sua instalação PHP para usar esta opção. ProfIdShortDesc=<b>Prof Id %s</b> é uma informação dePendente do país do Fornecedor.<br>Por Exemplo, para o país <b>%s</b>, é o código <b>%s</b>. -DolibarrDemo=Demo de Dolibarr ERP/CRM -StatsByNumberOfUnits=Estatísticas em número de unidades de produto/serviço -StatsByNumberOfEntities=Estatísticas em número de identidadees referentes NumberOfProposals=Número de propostas nos últimos 12 meses NumberOfCustomerOrders=Número de pedidos de cliente nos últimos 12 meses NumberOfCustomerInvoices=Número de faturas de cliente nos últimos 12 meses @@ -163,16 +112,10 @@ EMailTextInterventionValidated=A intervenção %s foi validada EMailTextInvoiceValidated=A fatura %s foi validada. EMailTextProposalValidated=A proposta %s foi validada. EMailTextOrderValidated=O pedido %s foi validado. -EMailTextOrderApproved=Pedido %s Aprovado EMailTextOrderValidatedBy=A ordem %s foi gravada por %s. -EMailTextOrderApprovedBy=Pedido %s Aprovado por %s -EMailTextOrderRefused=Pedido %s Reprovado -EMailTextOrderRefusedBy=Pedido %s Reprovado por %s -EMailTextExpeditionValidated=O envio %s foi validado. ImportedWithSet=Data importacao DolibarrNotification=Notificação automatica ResizeDesc=Insira a nova largura <b>OU</b> o novo peso. A proporção sera mantida durante a transformacao... -NewLength=Nova largura NewHeight=Nova altrua NewSizeAfterCropping=Nova dimensao depois do recorte DefineNewAreaToPick=Definir nova area na imagem para escolher ( click esquerdo na imagem e depois arastar ate o canto oposto) @@ -184,7 +127,6 @@ ThisIsListOfModules=Esta e a lista de modulos pre-seleçionados pelo profilo dem UseAdvancedPerms=Use as permissões avançadas de algums modulos FileFormat=Arquivo formato SelectAColor=Escolha a cor -AddFiles=Adicionar arquivos StartUpload=Iniciar o "upload" CancelUpload=Cancelar o "upload" FileIsTooBig=Tamanho do arquivo grande de mais @@ -198,15 +140,22 @@ ForgetIfNothing=Se voce nao pediu esta mudanca, simplismente esquece deste email IfAmountHigherThan=Se a quantia mais elevada do que <strong>%s</strong> SourcesRepository=Repositório de fontes Chart=Gráfico - -##### Export ##### -ExportsArea=Área de Exportações -AvailableFormats=Formatos disponíveis -LibraryUsed=Biblioteca usada -LibraryVersion=Versão da biblioteca -ExportableDatas=dados exportáveis +ContractValidatedInDolibarr=Contrato %s validado +PropalClosedSignedInDolibarr=Proposta %s assinada +PropalClosedRefusedInDolibarr=Proposta %s declinada +PropalClassifiedBilledInDolibarr=Proposta %s classificada faturada +InvoicePaidInDolibarr=Fatura %s marcada paga +InvoiceCanceledInDolibarr=Fatura %s cancelada +MemberValidatedInDolibarr=Membro %s validado +MemberResiliatedInDolibarr=Membro %s finalizado +MemberDeletedInDolibarr=Membro %s cancelado +MemberSubscriptionAddedInDolibarr=Inscrição do membo %s adicionada +ShipmentValidatedInDolibarr=Envio %s validado +ShipmentClassifyClosedInDolibarr=Expedição %s classificada como faturada +ShipmentUnClassifyCloseddInDolibarr=Expedição %s classificada como reaberta +ShipmentDeletedInDolibarr=Envio %s cancelado +Export=Exportar NoExportableData=não existe dados exportáveis (sem módulos com dados exportáveis gastodos, necessitam de permissões) -##### External sites ##### WebsiteSetup=Configuração do módulo website WEBSITE_PAGEURL=URL da página WEBSITE_TITLE=Título diff --git a/htdocs/langs/pt_BR/paybox.lang b/htdocs/langs/pt_BR/paybox.lang index b6b4dbff06d3169cf2560b80160b192c1a4150d9..383d49a131ff174d947291b7d818dfcc270431e3 100644 --- a/htdocs/langs/pt_BR/paybox.lang +++ b/htdocs/langs/pt_BR/paybox.lang @@ -1,18 +1,13 @@ # Dolibarr language file - Source file is en_US - paybox -PayBoxSetup=Configuração do módulo PayBox PayBoxDesc=Este módulo oferece uma página de pagamento atravé do fornecedor <a href FollowingUrlAreAvailableToMakePayments=As seguintes URL estão disponíveis para permitir a um cliente efetuar um pagamento PaymentForm=Formulário de Pagamento WelcomeOnPaymentPage=Bem Vindos a Nossos serviços de pagamento on-line ThisScreenAllowsYouToPay=Esta página lhe permite fazer seu pagamento on-line destinado a %s. ThisIsInformationOnPayment=Aqui está a informação sobre o pagamento a realizar -ToComplete=A completar -YourEMail=E-Mail de confirmação de pagamento Creditor=Beneficiário -PaymentCode=Código de pagamento PayBoxDoPayment=Continuar o pagamento com cartão YouWillBeRedirectedOnPayBox=Va a ser redirecionado a a página segura de Paybox para indicar seu cartão de crédito -Continue=Continuar ToOfferALinkForOnlinePayment=URL para %s pagamento ToOfferALinkForOnlinePaymentOnOrder=URL que oferece uma interface de pagamento on-line %s baseada no valor de un pedido de cliente ToOfferALinkForOnlinePaymentOnInvoice=URL que oferece uma interface de pagamento on-line %s baseada no valor de uma fatura @@ -25,7 +20,7 @@ YourPaymentHasBeenRecorded=Esta pagina confirma que o seu pagamento foi registra YourPaymentHasNotBeenRecorded=Seu pagamento nao foi registrado e a transaçao foi cancelada. Obrigado. AccountParameter=Parametros da conta UsageParameter=Parametros de uso -InformationToFindParameters=Ajuda a buscar suas %s informaçoes da conta +InformationToFindParameters=Ajuda a buscar suas %s informaçoes da conta PAYBOX_CGI_URL_V2=URL do Paybox CGI modulo para pagamento VendorName=Nome do vendedor CSSUrlForPaymentForm=CSS style sheet URL para modelo de pagamento diff --git a/htdocs/langs/pt_BR/paypal.lang b/htdocs/langs/pt_BR/paypal.lang index 9df278907fea8043a9522c1448f2c82caddb9f18..3a24701e5fb45d039392358f2b8bdddb84b2633a 100644 --- a/htdocs/langs/pt_BR/paypal.lang +++ b/htdocs/langs/pt_BR/paypal.lang @@ -16,12 +16,11 @@ ThisIsTransactionId=Eis o id da transação: <b>%s</b> PAYPAL_ADD_PAYMENT_URL=Adicionar URL do pagamento Paypal quando se envia o documento por e-mail PredefinedMailContentLink=Clique no link seguro abaixo para fazer o pagamento (PayPal) se nao esta ainda effetuado.⏎\n⏎\n%s⏎\n⏎\n YouAreCurrentlyInSandboxMode=No momento esta no modo "caixa de areia" -NewPaypalPaymentReceived=Novo pagamento Paypal recebido NewPaypalPaymentFailed=Tentado novo pagamento Paypal mas sem hesito. PAYPAL_PAYONLINE_SENDEMAIL=Endereço e-mail para aviso apos o pagamento (positivo ou nao) ReturnURLAfterPayment=Retornar ao URL após o pagamento ValidationOfPaypalPaymentFailed=Validação do pagamento do Paypal falhou -PaypalConfirmPaymentPageWasCalledButFailed= Pagamento completo mas nenhum pagamento foi recebido no PayPal +PaypalConfirmPaymentPageWasCalledButFailed=Pagamento completo mas nenhum pagamento foi recebido no PayPal SetExpressCheckoutAPICallFailed=Falha ao chamar a API: SetExpressCheckout. DoExpressCheckoutPaymentAPICallFailed=Falha ao chamar a API: DoExpressCheckoutPayment. DetailedErrorMessage=Mensagem de erro detalhada diff --git a/htdocs/langs/pt_BR/printing.lang b/htdocs/langs/pt_BR/printing.lang index 33164b36b3861c73c28e8938be292f0459ce3cce..bd46819e35b1eaf20f5d01a3290c1c093462d5ee 100644 --- a/htdocs/langs/pt_BR/printing.lang +++ b/htdocs/langs/pt_BR/printing.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - printing -Module64000Name=Impressão Direta Module64000Desc=Habilitar Sistema de Impressão Direta PrintingSetup=Configuração do Sistema de Impressão Direta PrintingDesc=Este módulo adiciona um botão Imprimir para enviar documentos diretamente para uma impressora (sem abrir documento em um aplicativo) com vários módulos. @@ -7,7 +6,6 @@ MenuDirectPrinting=Trabalhos de Impressão Direta DirectPrint=Impressão directa PrintingDriverDesc=Configuração de variáveis para o driver de impressão. ListDrivers=Lista de drivers -PrintTestDesc=Lista de Impressoras. FileWasSentToPrinter=Arquivo %s enviado para impressora NoActivePrintingModuleFound=Sem módulo ativo para impressão de documentos PleaseSelectaDriverfromList=Por favor, selecione um driver da lista. @@ -17,9 +15,7 @@ TargetedPrinter=Impressora em questão UserConf=Configuração por usuário PRINTGCP_INFO=Configuração API do Google OAuth PRINTGCP_AUTHLINK=Autenticação -PRINTGCP_TOKEN_ACCESS=Google Cloud Print OAuth Token PrintGCPDesc=Este driver permite enviar documentos diretamente para uma impressora com o Google Cloud Print. -GCP_Name=Nome GCP_displayName=Nome De Exibição GCP_Id=ID da impressora GCP_OwnerName=Nome do proprietário @@ -28,20 +24,12 @@ GCP_connectionStatus=Estado online GCP_Type=Tipo de impressora PrintIPPDesc=Este driver permite enviar documentos diretamente para uma impressora. Ele requer um sistema Linux com CUPS instalados. PRINTIPP_HOST=Servidor de impressão -PRINTIPP_PORT=Porta -PRINTIPP_USER=Login -PRINTIPP_PASSWORD=Senha NoDefaultPrinterDefined=Nenhuma impressora padrão definida DefaultPrinter=Impressora padrão -Printer=Impressora -IPP_Uri=Printer Uri IPP_Name=\nNome da impressora IPP_State=Estado da impressora IPP_State_reason=Estado razão IPP_State_reason1=Estado razão1 -IPP_BW=BW -IPP_Color=Cor -IPP_Device=Dispositivo IPP_Media=Mídia da impressora IPP_Supported=Tipo de mídia DirectPrintingJobsDesc=Esta página lista os trabalhos de impressão encontrado para impressoras disponíveis. diff --git a/htdocs/langs/pt_BR/productbatch.lang b/htdocs/langs/pt_BR/productbatch.lang index 6844c3a80d6bccfedaf2aa3141bbc1109688ddf1..0e2abcbcd0458e38db33358fc838047005a62c37 100644 --- a/htdocs/langs/pt_BR/productbatch.lang +++ b/htdocs/langs/pt_BR/productbatch.lang @@ -1,9 +1,7 @@ -# ProductBATCH language file - en_US - ProductBATCH +# Dolibarr language file - Source file is en_US - productbatch ManageLotSerial=Use lote / número de série ProductStatusOnBatch=Sim (lote / série necessário) ProductStatusNotOnBatch=Não (lote / série não utilizado) -ProductStatusOnBatchShort=Sim -ProductStatusNotOnBatchShort=Não Batch=Lote / Serial atleast1batchfield=Compra prazo de validade ou data de venda ou Lote / Número de série batch_number=Lote / Número de série diff --git a/htdocs/langs/pt_BR/products.lang b/htdocs/langs/pt_BR/products.lang index 556ad4eedab972407affe6389448aff5b5d0c9d2..301fbe00f969badf3229e0611c3ddf0c3c8646f8 100644 --- a/htdocs/langs/pt_BR/products.lang +++ b/htdocs/langs/pt_BR/products.lang @@ -5,24 +5,16 @@ ProductLabelTranslated=Etiqueta do produto traduzido ProductDescriptionTranslated=Descrição do produto traduzido ProductNoteTranslated=Nota produto traduzido ProductServiceCard=Ficha do produto/serviço -Products=Produtos -Services=Serviços -Product=Produto -Service=Serviço ProductId=ID do produto/serviço -Create=Criar Reference=Referência NewProduct=Novo produto NewService=Novo serviço ProductVatMassChange=Mudança VAT Massa ProductVatMassChangeDesc=Esta página pode ser utilizado para modificar uma taxa VAT definido em produtos ou serviços a partir de um valor para outro. Atenção, esta mudança é feita em todos os banco de dados. -MassBarcodeInit=Inicialização de código de barras. +MassBarcodeInit=Inicialização de código de barras. MassBarcodeInitDesc=Esta página pode ser usado para inicializar um código de barras em objetos que não têm código de barras definidas. Verifique antes que a instalação do módulo de código de barras é completa. ProductAccountancyBuyCode=Código contábil (para compras) ProductAccountancySellCode=Código contábil (venda) -ProductOrService=Produto ou Serviço -ProductsAndServices=Produtos e Serviços -ProductsOrServices=Produtos ou Serviços ProductsOnSell=Produto para venda ou para compra ProductsNotOnSell=Produto que não se vende nem se compra ProductsOnSellAndOnBuy=Produtos para venda e para compra @@ -34,11 +26,6 @@ LastRecordedProducts=Últimos %s produtos gravados LastRecordedServices=Últimos %s serviços gravados CardProduct0=Ficha do Produto CardProduct1=Ficha do Serviço -Stock=Estoque -Stocks=Estoques -Movements=Movimentos -Sell=Vendas -Buy=Compras OnSell=Vende-se OnBuy=Para compra NotOnSell=Não se vende @@ -53,40 +40,21 @@ ProductStatusNotOnBuyShort=Não para-se comprar UpdateVAT=Atualização IVA UpdateDefaultPrice=Atualização de preço padrão UpdateLevelPrices=Atualizar preços para cada nível -AppliedPricesFrom=Preço de venda válido a partir de -SellingPrice=Preço de venda SellingPriceHT=Preço de venda (sem taxas) SellingPriceTTC=Preço de venda (incl. taxas) CostPriceDescription=Este preço ( livre de impostos) pode ser usado para armazenar a quantidade média do custo do produto para sua empresa. Pode ser qualquer preço a se calcular, por exemplo, a partir do preço médio de compra mais o custo médio de produção e distribuição. CostPriceUsage=Numa futura versão, este valor não poderá ser usado para cálculo de margem. SoldAmount=Total vendido PurchasedAmount=Total comprado -NewPrice=Novo preço MinPrice=Preço de venda min. CantBeLessThanMinPrice=O preço de venda não deve ser inferior ao mínimo para este produto (%s ICMS) ContractStatusClosed=Encerrado -ErrorProductAlreadyExists=Um produto com a referencia %s já existe. ErrorProductBadRefOrLabel=O valor da referencia ou etiqueta é incorreto ErrorProductClone=Aconteceu um problema durante a clonação do produto ou serviço. ErrorPriceCantBeLowerThanMinPrice=Erro, o preço não pode ser inferior ao preço mínimo. -Suppliers=Fornecedores -SupplierRef=Ref. fornecedor -ShowProduct=Mostrar produto -ShowService=Mostrar serviço -ProductsAndServicesArea=Área de Produtos e Serviços -ProductsArea=Área de Produtos -ServicesArea=Área de Serviços -ListOfStockMovements=Lista de movimentos de estoque -BuyingPrice=Preço de compra PriceForEachProduct=Produtos com preços específicos SupplierCard=Ficha do fornecedor -PriceRemoved=Preço eliminado -BarCode=Código de barras -BarcodeType=Tipo de código de barras -SetDefaultBarcodeType=Defina o tipo de código de barras -BarcodeValue=Valor do código de barras NoteNotVisibleOnBill=Nota (não visivel em faturas, orçamentos etc.) -ServiceLimitedDuration=Sim o serviço é de Duração limitada : MultiPricesAbility=Varias faixas de preços de produtos/serviços por segmento (cada cliente está em um segmento) MultiPricesNumPrices=Número de preços AssociatedProductsAbility=Ative o recurso pacote @@ -96,30 +64,17 @@ ParentProductsNumber=Numero de pacotes pais do produto ParentProducts=Produtos pai IfZeroItIsNotAVirtualProduct=Se for 0, este produto não é um produto pacote IfZeroItIsNotUsedByVirtualProduct=Se 0, este produto não é usado por qualquer produto do pacote -Translation=Tradução KeywordFilter=Filtro por palavra-chave CategoryFilter=Filtro por categoria -ProductToAddSearch=Procurar produtos a Adicionar -NoMatchFound=Não foram encontrados resultados ProductAssociationList=Lista dos produtos / serviços que são componente deste produto / pacote virtual ProductParentList=Lista de pacote produtos/serviços com este produto como componente ErrorAssociationIsFatherOfThis=Um dos produtos selecionados é pai do produto em curso -DeleteProduct=Eliminar um produto/serviço ConfirmDeleteProduct=? Tem certeza que quer eliminar este produto/serviço? -ProductDeleted=O produto/serviço "%s" foi eliminado da base de dados. -ExportDataset_produit_1=Produtos e Serviços -ExportDataset_service_1=Serviços -ImportDataset_produit_1=Produtos -ImportDataset_service_1=Serviços -DeleteProductLine=Eliminar linha de produto ConfirmDeleteProductLine=Tem certeza que quer eliminar esta linha de produto? -ProductSpecial=Especial QtyMin=Quantidade min PriceQtyMin=Preco para esta qtd min. (sem desconto) VATRateForSupplierProduct=Percentual ICMS (para este fornecedor/produto) DiscountQtyMin=Desconto padrao para qtd -NoPriceDefinedForThisSupplier=Nenhum Preço/Quant. definido para este fornecedor/produto -NoSupplierPriceDefinedForThisProduct=Nenhum Preço/Quant. Fornecedor definida para este produto PredefinedProductsToSell=Produtos pré-definidas para vender PredefinedServicesToSell=Serviços predefinidos para vender PredefinedProductsAndServicesToSell=Produtos / serviços pré-definidas para vender @@ -127,7 +82,6 @@ PredefinedProductsToPurchase=Produto pré-definidas para compra PredefinedServicesToPurchase=Serviços pré-definidos para compra PredefinedProductsAndServicesToPurchase=Produtos / serviços predefinidos para compra. NotPredefinedProducts=Produtos/Serviços sem predefinição -GenerateThumb=Gerar a etiqueta ServiceNb=Serviço n� %s ListProductServiceByPopularity=Lista de produtos/serviços por popularidade ListProductByPopularity=Lista de produtos por popularidade @@ -148,32 +102,12 @@ SuppliersPrices=Fornecedor preços SuppliersPricesOfProductsOrServices=Fornecedor de preços (produtos ou serviços) CustomCode=NCM/SH CountryOrigin=Pais de origem -Nature=Tipo de produto ShortLabel=Etiqueta curta -Unit=Unidade -p=u. set=conjunto se=conjunto -second=segundo -s=s -hour=hora -h=h -day=dia -d=d -kilogram=quilograma -kg=Kg -gram=grama -g=g meter=medidor -m=m -lm=lm -m2=m² -m3=m³ -liter=litro -l=L ProductCodeModel=Modelo de ref. de produto ServiceCodeModel=Modelo de ref. de serviço -CurrentProductPrice=Preço atual AlwaysUseNewPrice=Usar sempre preço atual do produto/serviço AlwaysUseFixedPrice=Usar preço fixo PriceByQuantity=Diferentes preços por quantidade @@ -182,7 +116,6 @@ MultipriceRules=Regras de preços por segmento UseMultipriceRules=Usar regras de preços do segmento (definido na configuração do módulos produto) para calcular automaticamente o preço de todos os segmentos de acordo com o primeiro segmento PercentVariationOver=%% variação sobre %s PercentDiscountOver=%% disconto sobre %s -### composition fabrication Build=Produzir ProductsMultiPrice=Produtos e preços de cada segmento ProductsOrServiceMultiPrice=Preços de Clientes (de produtos ou serviços, multi-preços) @@ -221,7 +154,6 @@ PriceExpressionEditorHelp3=Em ambos produtos/serviços e fornecedores nesses pre PriceExpressionEditorHelp4=No preço do produto/serviço apenas: <b>#supplier_min_price#</b><br>Em apenas preços com fornecedores: <b>#supplier_quantity# e #supplier_tva_tx#</b> PriceExpressionEditorHelp5=Valores globais disponíveis: PriceMode=Modo de Preço -PriceNumeric=Número DefaultPrice=Preço padrão ComposedProductIncDecStock=Aumento/diminuição do estoque, armazém, atual ComposedProduct=Sub-produto @@ -234,9 +166,7 @@ AddUpdater=Adicionar atualizador GlobalVariables=As variáveis globais VariableToUpdate=Variável para atualizar GlobalVariableUpdaters=Updaters variáveis globais -UpdateInterval=Intervalo de atualização (minutos) LastUpdated=Ultima atualização -CorrectlyUpdated=Corretamente atualizado PropalMergePdfProductActualFile=Usar arquivos para adicionar em PDF Azur são / é PropalMergePdfProductChooseFile=Selecione os arquivos PDF IncludingProductWithTag=Incluindo produto/serviço com tag @@ -255,4 +185,3 @@ VolumeUnits=Unidade de Volume SizeUnits=Unidade de Tamanho DeleteProductBuyPrice=Apagar preço de Compra ConfirmDeleteProductBuyPrice=Tem certeza que que deseja excluir este preço de compra? - diff --git a/htdocs/langs/pt_BR/projects.lang b/htdocs/langs/pt_BR/projects.lang index 78ffb9962abbac7a3461fb60208211a4a0590d06..7674cc907189e5fa25073cd26b80539e8b7bbe24 100644 --- a/htdocs/langs/pt_BR/projects.lang +++ b/htdocs/langs/pt_BR/projects.lang @@ -1,12 +1,8 @@ # Dolibarr language file - Source file is en_US - projects -RefProject=Ref. do projeto ProjectRef=Ref projeto. ProjectId=Id do projeto ProjectLabel=Etiqueta projeto -Project=Projeto -Projects=Projetos ProjectsArea=Setor de projetos -ProjectStatus=Estado do projeto SharedProject=A todos PrivateProject=Contatos do projeto MyProjectsDesc=Exibe apenas os projetos que você for um contato (independente do tipo). @@ -33,7 +29,6 @@ OpenedTasks=Tarefas em andamento OpportunitiesStatusForOpenedProjects=Montante de oportunidades de projetos abertos de acordo com a situação OpportunitiesStatusForProjects=Montante de oportunidades dos projetos pela situação ShowProject=Mostrar projeto -SetProject=Definir Projeto NoProject=Nenhum Projeto Definido NbOfProjects=Nº de projetos TimeSpent=Dispêndio de tempo @@ -41,45 +36,27 @@ TimeSpentByYou=Tempo gasto por você TimeSpentByUser=Tempo gasto por usuário TimesSpent=Dispêndio de tempo RefTask=Ref. da tarefa -LabelTask=Etiqueta de Tarefa TaskTimeSpent=Dispêndio de tempo com tarefas TaskTimeUser=Usuário -TaskTimeNote=Nota -TaskTimeDate=Data TasksOnOpenedProject=Tarefas em projetos abertos -WorkloadNotDefined=Carga de trabalho não definida NewTimeSpent=Novo dispêndio de tempo MyTimeSpent=Meu dispêndio de tempo -Tasks=Tarefas -Task=Tarefa -TaskDateStart=Data de início da tarefa TaskDateEnd=Data final da tarefa -TaskDescription=Descrição da tarefa NewTask=Nova tarefa AddTask=Criar tarefa -Activity=Atividade Activities=Tarefas/atividades MyActivities=Minhas Tarefas/Atividades -MyProjects=Os Meus Projetos MyProjectsArea=Minha Área de projetos -DurationEffective=Duração Efetiva ProgressDeclared=o progresso declarado ProgressCalculated=calculado do progresso -Time=Tempo -ListOfTasks=Lista de tarefas GoToListOfTimeConsumed=Ir para a lista de dispêndios de tempo -GoToListOfTasks=Ir para a lista de tarefas -ListProposalsAssociatedProject=Lista de Orçamentos Associados ao Projeto ListOrdersAssociatedProject=Lista de pedidos do cliente associados ao projeto ListInvoicesAssociatedProject=Lista de faturas do cliente associadas ao projeto ListPredefinedInvoicesAssociatedProject=Lista de temas das faturas associadas ao projeto ListSupplierOrdersAssociatedProject=Lista de pedidos do fornecedor associados ao projeto ListSupplierInvoicesAssociatedProject=Lista de faturas do fornecedor associadas ao projeto -ListContractAssociatedProject=Lista de Contratos Associados ao Projeto -ListFichinterAssociatedProject=Lista de intervenções associadas ao projeto ListExpenseReportsAssociatedProject=Lista de relatórios de despesas associadas ao projeto ListDonationsAssociatedProject=Lista de doações associados ao projeto -ListActionsAssociatedProject=Lista de eventos associados ao projeto ListTaskTimeUserProject=Lista de tempo consumido nas tarefas de projecto ActivityOnProjectToday=Atividade no projeto hoje ActivityOnProjectYesterday=Atividade de ontem no projeto @@ -88,7 +65,6 @@ ActivityOnProjectThisMonth=Atividade ao Projeto este Mês ActivityOnProjectThisYear=Atividade ao Projeto este Ano ChildOfTask=Link do projeto/tarefa NotOwnerOfProject=Não é responsável deste projeto privado -AffectedTo=Atribuido a CantRemoveProject=Este projeto não pode ser eliminado porque está referenciado por muito objetos (facturas, pedidos e outros). ver a lista no separador referencias. ValidateProject=Validar projeto ConfirmValidateProject=Você tem certeza que deseja validar este projeto? @@ -103,26 +79,18 @@ DeleteATimeSpent=Excluir dispêndio de tempo ConfirmDeleteATimeSpent=Você tem certeza que deseja excluir este tempo gasto? DoNotShowMyTasksOnly=Ver tambem tarefas não associadas comigo ShowMyTasksOnly=Visualizar apenas tarefas incumbidas a mim -TaskRessourceLinks=Recursos -ProjectsDedicatedToThisThirdParty=Projetos dedicados a este terceiro NoTasks=Não há tarefas para este projeto LinkedToAnotherCompany=Ligado a outros terceiros TaskIsNotAffectedToYou=Tarefas não incumbidas a você ErrorTimeSpentIsEmpty=O dispêndio de tempo está em branco ThisWillAlsoRemoveTasks=Esta ação também vai apagar todas as tarefas do projeto <b>(tarefas% s</b> no momento) e todas as entradas de tempo gasto. IfNeedToUseOhterObjectKeepEmpty=Se alguns objetos (nota fiscal, ordem, ...), pertencentes a um terceiro, deve estar vinculado ao projeto de criar, manter este vazio para que o projeto de vários fornecedores. -CloneProject=Clonar projeto -CloneTasks=Clonar tarefas CloneContacts=Copiar contatos CloneNotes=Copiar notas CloneProjectFiles=Copiar arquivos do projetos CloneTaskFiles=Copia(s) do(s) arquivo(s) do projeto(s) finalizado -CloneMoveDate=Atualizar as datas do projeto/tarefas a partir de agora? ConfirmCloneProject=Você tem certeza que deseja clonar este projeto? -ProjectReportDate=Alterar a data da tarefa de acordo com a data de início do projeto ErrorShiftTaskDate=Impossível mudar data da tarefa de acordo com a nova data de início do projeto -ProjectsAndTasksLines=Projetos e tarefas -ProjectCreatedInDolibarr=Projeto %s criado ProjectModifiedInDolibarr=Projeto %s modificado TaskCreatedInDolibarr=Tarefa %s criada TaskModifiedInDolibarr=Tarefa %s alterada @@ -136,18 +104,12 @@ OpportunityAmountShort=Montante de oport. OpportunityAmountAverageShort=Montante médio de oport. OpportunityAmountWeigthedShort=Montante de oport. ponderadas WonLostExcluded=Ganho/Perda excluída -##### Types de contacts ##### TypeContact_project_internal_PROJECTLEADER=Chefe de projeto TypeContact_project_external_PROJECTLEADER=Chefe de projeto -TypeContact_project_internal_PROJECTCONTRIBUTOR=Colaborador -TypeContact_project_external_PROJECTCONTRIBUTOR=Colaborador TypeContact_project_task_internal_TASKEXECUTIVE=Tarefa executada TypeContact_project_task_external_TASKEXECUTIVE=Tarefa executada -TypeContact_project_task_internal_TASKCONTRIBUTOR=Colaborador -TypeContact_project_task_external_TASKCONTRIBUTOR=Colaborador SelectElement=Selecionar componente AddElement=Link para componente -# Documents models DocumentModelBeluga=Modelo de projeto para visão geral objetos ligados DocumentModelBaleine=Modelo de relatório do Projeto para tarefas PlannedWorkload=carga horária planejada @@ -164,7 +126,6 @@ TasksWithThisUserAsContact=As tarefas atribuídas a esse usuário ResourceNotAssignedToProject=Não atribuído ao projeto ResourceNotAssignedToTheTask=Não atribuído à tarefa AssignTaskToMe=Atribuir tarefa para mim -AssignTask=Atribuir ProjectOverview=Visão geral ManageTasks=Use projetos para acompanhar tarefas e tempo ManageOpportunitiesStatus=Use projetos para acompanhar leads / opportinuties @@ -184,10 +145,4 @@ OpportunityTotalAmount=Montante total de oportunidades OpportunityPonderatedAmount=Montante de oportunidades ponderadas OpportunityPonderatedAmountDesc=Montante de oportunidades ponderadas com probalidade OppStatusPROSP=Prospecção -OppStatusQUAL=Qualificação -OppStatusPROPO=Proposta -OppStatusNEGO=Negociação -OppStatusPENDING=Pendente OppStatusWON=Ganhou -OppStatusLOST=Perdido -Budget=Orçamento diff --git a/htdocs/langs/pt_BR/propal.lang b/htdocs/langs/pt_BR/propal.lang index 5f6d41cf389b258461aa0bc61bb061ba44a82372..1e451132e3873860f135e20c5cf69a9115405d89 100644 --- a/htdocs/langs/pt_BR/propal.lang +++ b/htdocs/langs/pt_BR/propal.lang @@ -1,57 +1,28 @@ # Dolibarr language file - Source file is en_US - propal -Proposals=Orçamentos -Proposal=Orçamento -ProposalShort=Proposta -ProposalsDraft=Orçamentos Rascunho ProposalsOpened=Propostas comerciais abertas -Prop=Orçamentos -CommercialProposal=Orçamento ProposalCard=Cartao de proposta -NewProp=Novo Orçamento -NewPropal=Novo Orçamento -Prospect=Cliente Potencial -DeleteProp=Eliminar Orçamento -ValidateProp=Confirmar Orçamento AddProp=Criar proposta ConfirmDeleteProp=Tem certeza que quer apagar esta proposta comercial? ConfirmValidateProp=Tem certeza que quer validar esta proposta comercial sob o nome <b>%s</b>? LastPropals=Últimas %s propostas LastModifiedProposals=Últimas %s propostas modificadas -AllPropals=Todos Os Orçamentos -SearchAProposal=Procurar um Orçamento NoProposal=Sem propostas -ProposalsStatistics=Estatísticas de Orçamentos -NumberOfProposalsByMonth=Número por Mês AmountOfProposalsByMonthHT=Valor por Mês (sem ICMS) -NbOfProposals=Número Orçamentos -ShowPropal=Ver Orçamento -PropalsDraft=Rascunho PropalsOpened=Aberto -PropalStatusDraft=Rascunho (a Confirmar) -PropalStatusValidated=Validado (Orçamento Aberto) PropalStatusSigned=Assinado (A Faturar) PropalStatusNotSigned=Sem Assinar (Encerrado) PropalStatusBilled=Faturado -PropalStatusDraftShort=Rascunho PropalStatusClosedShort=Encerrado -PropalStatusSignedShort=Assinado -PropalStatusNotSignedShort=Sem Assinar PropalStatusBilledShort=Faturado PropalsToClose=Orçamentos a Fechar PropalsToBill=Orçamentos Assinados a Faturar -ListOfProposals=Lista de Orçamentos ActionsOnPropal=Ações sobre o Orçamento -RefProposal=Ref. Orçamento -SendPropalByMail=Enviar Orçamento por E-mail DatePropal=Data da Proposta -DateEndPropal=Válido até ValidityDuration=Validade da proposta CloseAs=Configurar status para SetAcceptedRefused=Configurar aceito/recusado -ErrorPropalNotFound=Orçamento %s Inexistente AddToDraftProposals=Adicionar a projeto de proposta NoDraftProposals=Não há projetos de propostas -CopyPropalFrom=Criar orçamento por Cópia de um existente CreateEmptyPropal=Criar orçamento a partir da Lista de produtos predefinidos DefaultProposalDurationValidity=Prazo de validez por default (em dias) UseCustomerContactAsPropalRecipientIfExist=Utilizar endereço contato de seguimento de cliente definido em vez do endereço do Fornecedor como destinatário dos Orçamentos @@ -63,20 +34,12 @@ ProposalLine=Linha da Proposta AvailabilityPeriod=Prazo de entrega SetAvailability=Atraso de entrega AfterOrder=Apos o pedido -##### Availability ##### -AvailabilityTypeAV_NOW=Imediato -AvailabilityTypeAV_1W=1 semana -AvailabilityTypeAV_2W=2 semanas -AvailabilityTypeAV_3W=3 semanas AvailabilityTypeAV_1M=1 mes -##### Types de contacts ##### TypeContact_propal_internal_SALESREPFOLL=Representante seguindo a proposta TypeContact_propal_external_BILLING=Contato da fatura cliente -TypeContact_propal_external_CUSTOMER=Contato cliente seguindo a proposta -# Document models -DocModelAzurDescription=Modelo de orçamento completo (logo...) +TypeContact_propal_external_CUSTOMER=Contato cliente seguindo a proposta DefaultModelPropalCreate=Criaçao modelo padrao DefaultModelPropalToBill=Modelo padrao no fechamento da proposta comercial ( a se faturar) DefaultModelPropalClosed=Modelo padrao no fechamento da proposta comercial (nao faturada) ProposalCustomerSignature=Aceite por escrito, carimbo da empresa, data e assinatura -ProposalsStatisticsSuppliers=Estatísticas de Propostas a Fornecedor +ProposalsStatisticsSuppliers=Estatísticas de Propostas a Fornecedor diff --git a/htdocs/langs/pt_BR/receiptprinter.lang b/htdocs/langs/pt_BR/receiptprinter.lang index d1036dfad2a9a6cb1ac8036c6f6738f436a37d69..6cff8032b5a606f30749739b4a67fd6c8af5a9ab 100644 --- a/htdocs/langs/pt_BR/receiptprinter.lang +++ b/htdocs/langs/pt_BR/receiptprinter.lang @@ -16,8 +16,6 @@ CONNECTOR_NETWORK_PRINT=Impressora de rede CONNECTOR_FILE_PRINT=Impressora local CONNECTOR_WINDOWS_PRINT=Impressora local do Windows CONNECTOR_DUMMY_HELP=Impressora Falsa para teste, não imprime nada -CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 -CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@nomedocomputador/grupodetrabalho/Impressora do Recibo PROFILE_DEFAULT=Perfil Padrão PROFILE_SIMPLE=Perfil Simples @@ -29,13 +27,10 @@ PROFILE_SIMPLE_HELP=Perfil Simples Sem Imagens PROFILE_EPOSTEP_HELP=Ajuda do Perfil Epos Tep PROFILE_P822D_HELP=Perfil P822D Sem Imagens PROFILE_STAR_HELP=Perfil Star -DOL_ALIGN_LEFT=Texto alinhado à esquerda DOL_ALIGN_CENTER=Texto centralizado -DOL_ALIGN_RIGHT=Texto alinhado à direita DOL_USE_FONT_A=Usar fonte A da impressora DOL_USE_FONT_B=Usar fonte B da impressora DOL_USE_FONT_C=Usar fonte C da impressora -DOL_PRINT_BARCODE=Imprimir código de barras DOL_PRINT_BARCODE_CUSTOMER_ID=Impressão de código de barras ID de cliente DOL_CUT_PAPER_FULL=Cortar todo o ticket DOL_CUT_PAPER_PARTIAL=Cortar parcialmente o ticket diff --git a/htdocs/langs/pt_BR/resource.lang b/htdocs/langs/pt_BR/resource.lang index 33dfe06ba4f0add092899d7fb6cb4a215245611e..3d3af7d00280990e3d296204bfeb68f41632d188 100644 --- a/htdocs/langs/pt_BR/resource.lang +++ b/htdocs/langs/pt_BR/resource.lang @@ -1,31 +1,17 @@ # Dolibarr language file - Source file is en_US - resource -MenuResourceIndex=Recursos -MenuResourceAdd=Novo recurso DeleteResource=Remover recurso ConfirmDeleteResourceElement=Confirmar remoção do recurso para este elemento -NoResourceInDatabase=Nenhum recurso na base de dados NoResourceLinked=Nenhum recurso vinculado - -ResourcePageIndex=Lista de recursos -ResourceSingular=Recurso ResourceCard=Cartao recursos AddResource=Criar recurso -ResourceFormLabel_ref=Nome do recurso -ResourceType=Tipo de recurso -ResourceFormLabel_description=Descrição do recurso - ResourcesLinkedToElement=Recursos vinculados ao elemento - ShowResource=Mostrar recurso - ResourceElementPage=Elemento recursos ResourceCreatedWithSuccess=Recurso criado com sucesso RessourceLineSuccessfullyDeleted=Linha de Recursos excluído com sucesso RessourceLineSuccessfullyUpdated=Linha de Recursos atualizado com sucesso ResourceLinkedWithSuccess=Recurso conectado com sucesso - ConfirmDeleteResource=Confirme para remover este recurso RessourceSuccessfullyDeleted=Recurso removido com sucesso DictionaryResourceType=Tipo de recurso - SelectResource=Selecionar recurso diff --git a/htdocs/langs/pt_BR/salaries.lang b/htdocs/langs/pt_BR/salaries.lang index 3d9a619d7665d8cfab7be7b6f9d899504a2a11ef..c74c6709d1fdde13fbc95e49b63a34713562a4ca 100644 --- a/htdocs/langs/pt_BR/salaries.lang +++ b/htdocs/langs/pt_BR/salaries.lang @@ -1,14 +1,10 @@ # Dolibarr language file - Source file is en_US - salaries SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Conta da Contabilidade padrão para pagamentos de salário SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Conta da Contabilidade padrão para despesas pessoais -Salary=Salário -Salaries=Salários NewSalaryPayment=Novo pagamento de salário SalaryPayment=Pagamento de salário SalariesPayments=Pagamentos de salários -ShowSalaryPayment=Mostrar pagamento de salário THM=Taxa média horária TJM=Taxa média diária -CurrentSalary=Salário atual THMDescription=Este valor pode ser usado para calcular o custo do tempo consumido em um projeto inserido por usuários se o módulo de projetos é utilizado TJMDescription=Este valor é atualmente apenas como informação e não é utilizado para o cálculo diff --git a/htdocs/langs/pt_BR/sendings.lang b/htdocs/langs/pt_BR/sendings.lang index 9ed595064ddfb7b3b21083cdf8f3b63f5ec41c63..895b129808d1b7a6e7a12d0fb765b9c3860f889e 100644 --- a/htdocs/langs/pt_BR/sendings.lang +++ b/htdocs/langs/pt_BR/sendings.lang @@ -1,41 +1,18 @@ # Dolibarr language file - Source file is en_US - sendings RefSending=Ref. Envio -Sending=Envio -Sendings=Envios AllSendings=Todos os embarques -Shipment=Envio -Shipments=Envios ShowSending=Mostrar envios Receivings=Recibos de entrega SendingsArea=Área Envios -ListOfSendings=Lista de Envios -SendingMethod=Método de Envio LastSendings=Últimas %s remessas -StatisticsOfSendings=Estatísticas de Envios -NbOfSendings=Número de Envios -NumberOfShipmentsByMonth=Número de envios por mês SendingCard=Cartão de embarque -NewSending=Novo Envio -CreateASending=Criar um Envio -QtyShipped=Quant. Enviada -QtyToShip=Quant. a Enviar QtyReceived=Quant. Recibida KeepToShip=Permaneça para enviar -OtherSendingsForSameOrder=Outros Envios deste Pedido -SendingsAndReceivingForSameOrder=Envios e Recepções deste pedido -SendingsToValidate=Envios a Confirmar -StatusSendingCanceled=Cancelado -StatusSendingDraft=Rascunho StatusSendingValidated=Validado (produtos a enviar o enviados) -StatusSendingProcessed=Processado -StatusSendingDraftShort=Rascunho -StatusSendingValidatedShort=Validado -StatusSendingProcessedShort=Processado SendingSheet=Folha de embarque ConfirmDeleteSending=Tem certeza que quer remover este envio? ConfirmValidateSending=Tem certeza que quer validar o envio com referencia <b>%s</b>? ConfirmCancelSending=Tem certeza que quer cancelar este envio? -DocumentModelSimple=Modelo Simples DocumentModelMerou=Modelo A5 Merou WarningNoQtyLeftToSend=Atenção, nenhum produto à espera de ser enviado. StatsOnShipmentsOnlyValidated=Estatisticas referentes os envios , mas somente validados. Data usada e data da validacao do envio ( a data planejada da entrega nao e sempre conhecida). @@ -54,14 +31,9 @@ ProductQtyInSuppliersShipmentAlreadyRecevied=Quantidade do produto a partir da o NoProductToShipFoundIntoStock=Nenhum produto para enviar encontrado em armazém <b>%s</b>. Estoque correto ou voltar para escolher outro armazém. WeightVolShort=Peso/Vol. ValidateOrderFirstBeforeShipment=Você deve primeiro, antes de fazer as remessas, confirmar o pedido. - -# Sending methods -# ModelDocument DocumentModelTyphon=Modelo de Documento Typhon Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constante EXPEDITION_ADDON_NUMBER nao definida SumOfProductVolumes=Soma do volume dos pedidos SumOfProductWeights=Soma do peso dos produtos - -# warehouse details -DetailWarehouseNumber= Detalhes do estoque -DetailWarehouseFormat= W:%s (Qtd : %d) +DetailWarehouseNumber=Detalhes do estoque +DetailWarehouseFormat=W:%s (Qtd : %d) diff --git a/htdocs/langs/pt_BR/sms.lang b/htdocs/langs/pt_BR/sms.lang index 0bdcc9c113ade8010d35b35bef6b0c1c26a114a7..4cebb0588093cb4d4e531d3d03911aa1f1f56e0f 100644 --- a/htdocs/langs/pt_BR/sms.lang +++ b/htdocs/langs/pt_BR/sms.lang @@ -6,13 +6,7 @@ SmsCard=Chip SMS AllSms=Todas as campnhas SMS SmsTargets=Alvos SmsRecipients=Alvos -SmsRecipient=Alvo -SmsTitle=Descrição -SmsFrom=Remetente -SmsTo=Alvo SmsTopic=Topico do SMS -SmsText=Mensagem -SmsMessage=Mensagem SMS ShowSms=Mostrar SMS ListOfSms=Listar campanhas SMS NewSms=Nova campanha SMS @@ -27,13 +21,6 @@ SmsResult=Resultado do envio SMS TestSms=Testar SMS ValidSms=Validar SMS ApproveSms=Aprovar SMS -SmsStatusDraft=Rascunho -SmsStatusValidated=Validado -SmsStatusApproved=Aprovado -SmsStatusSent=Enviado -SmsStatusSentPartialy=Enviado parcialmente -SmsStatusSentCompletely=Enviado completamente -SmsStatusError=Erro SmsStatusNotSent=Nao enviado SmsSuccessfulySent=SMS enviado coretamente (de %s a %s) ErrorSmsRecipientIsEmpty=Numero de alvos vazio @@ -42,10 +29,6 @@ ConfirmValidSms=Quer confirmar a validacao desta campanha? NbOfUniqueSms=Nr. de numeros telefonicos unicos NbOfSms=Numero de numeros telefonicos ThisIsATestMessage=Isto e uma mensagem de teste -SendSms=Enviar SMS SmsInfoCharRemain=Nr de caracteres restantes -SmsInfoNumero= (formato internacional ex: +33899701761) -DelayBeforeSending=Atraso antes de enviar (minutos) +SmsInfoNumero=(formato internacional ex: +33899701761) SmsNoPossibleSenderFound=Nenhum expedidor disponível. Verifique a configuração do seu provedor de SMS. -SmsNoPossibleRecipientFound=Nenhum alvo disponível. Verifique a configuração do seu provedor de SMS. - diff --git a/htdocs/langs/pt_BR/stocks.lang b/htdocs/langs/pt_BR/stocks.lang index 4ca55a40f1e61bc550396481221f6f6a56d03909..ad5bb42a98afa74f90bfc63d3d9faead3af47945 100644 --- a/htdocs/langs/pt_BR/stocks.lang +++ b/htdocs/langs/pt_BR/stocks.lang @@ -1,13 +1,10 @@ # Dolibarr language file - Source file is en_US - stocks WarehouseCard=Ficha do armazém Warehouse=Armazém -Warehouses=Armazéns NewWarehouse=Novo armazém / setor de armazenagem -WarehouseEdit=Modificar armazém MenuNewWarehouse=Novo armazém WarehouseSource=Armazém de origem WarehouseSourceNotDefined=Nenhum armazém definido, -AddOne=Adicionar um WarehouseTarget=Armazém de destino ValidateSending=Apagar envio CancelSending=Cancelar envio @@ -22,27 +19,19 @@ ErrorWarehouseRefRequired=A referência do armazém é necessária ListOfWarehouses=Lista de armazéns ListOfStockMovements=Lista de movimentações de estoque StocksArea=Setor de armazenagem -Location=Localização -LocationSummary=Nome abreviado da localização NumberOfDifferentProducts=Número de produtos diferentes NumberOfProducts=Número total de produtos LastMovement=Última movimentação LastMovements=Últimas movimentações -Units=Unidades -Unit=Unidade StockCorrection=Corrigir estoque StockTransfer=Tranferencia de Estoque MassStockTransferShort=Transferência de estoque em massa StockMovement=Movimento de estoque StockMovements=Movimentações de estoque LabelMovement=Rótulo para a movimentação -NumberOfUnit=Número de peças UnitPurchaseValue=Preço unitário de compra StockTooLow=Estoque muito baixo StockLowerThanLimit=Estoque mais baixo do que o limite de alerta -EnhancedValue=Valor -PMPValue=Valor (PMP) -PMPValueShort=PMP EnhancedValueOfWarehouses=Valor de estoques UserWarehouseAutoCreate=Criar existencias automaticamente na criação de um usuário AllowAddLimitStockByWarehouse=Permitir a adição de limite e estoque desejado por produto e armazém @@ -81,7 +70,6 @@ EstimatedStockValueSellShort=Valor para venda EstimatedStockValueSell=Valor para venda EstimatedStockValueShort=O valor das ações de entrada EstimatedStockValue=O valor das ações de entrada -DeleteAWarehouse=Excluir um armazém ConfirmDeleteWarehouse=Tem certeza que quer remover o estoque <b>%s</b>? PersonalStock=Estoque Pessoal ThisWarehouseIsPersonalStock=Este armazenamento representa estoque pessoal de: @@ -102,7 +90,7 @@ CurentlyUsingVirtualStock=Estoque virtual CurentlyUsingPhysicalStock=Estoque físico RuleForStockReplenishment=Regra para a reposição de estoques SelectProductWithNotNullQty=Selecione pelo menos um produto com um qty não nulo e um fornecedor -AlertOnly= Alertas apenas +AlertOnly=Alertas apenas WarehouseForStockDecrease=Os arquivos serão utilizados para redução estoque WarehouseForStockIncrease=O arquivos serão utilizados para aumento de ForThisWarehouse=Para este armazenamento @@ -110,7 +98,7 @@ ReplenishmentStatusDesc=Esta é a lista de todos os produtos que esão abaixo do ReplenishmentOrdersDesc=Esta é a lista de todas as Ordens de Compras abertas, incluindo produtos pré-definidos. Somente ordens com produtos pré-definidos que podem alterar o estoque, são visíveies aqui. Replenishments=Reabastecimentos NbOfProductBeforePeriod=Quantidade de produtos em estoque antes do período selecionado -NbOfProductAfterPeriod=Quantidade de produtos em estoque período selecionado depois +NbOfProductAfterPeriod=Quantidade de produtos em estoque período selecionado depois MassMovement=Movimentações em massa SelectProductInAndOutWareHouse=Selecione um produto, uma quantidade, um armazém de origem e um armazém de destino e clique em "% s". Uma vez feito isso para todos os movimentos necessários, clique em "% s". RecordMovement=Gravar a transferência @@ -119,13 +107,12 @@ StockMovementRecorded=Movimentações de estoque registradas RuleForStockAvailability=Regras sobre os requisitos de ações StockMustBeEnoughForInvoice=O nível de estoque deve ser suficiente para se adicionar produto/serviço à fatura (é feita uma verificação no estoque real quando da adição de uma linha na fatura sempre que a regra for a mudança automática de estoque) StockMustBeEnoughForOrder=O nível de estoque deve ser suficiente para se adicionar produto/serviço ao pedido (é feita uma verificação no estoque real quando da adição de uma linha no pedido sempre que a regra for a mudança automática de estoque) -StockMustBeEnoughForShipment= O nível de estoque deve ser suficiente para se adicionar produto/serviço à remessa (é feita uma verificação no estoque real quando da adição de uma linha na remessa sempre que a regra for a mudança automática de estoque) +StockMustBeEnoughForShipment=O nível de estoque deve ser suficiente para se adicionar produto/serviço à remessa (é feita uma verificação no estoque real quando da adição de uma linha na remessa sempre que a regra for a mudança automática de estoque) MovementLabel=Rótulo de movimentação InventoryCode=Código da movimentação ou do inventário IsInPackage=Contido em pacote WarehouseAllowNegativeTransfer=O estoque pode ser negativo qtyToTranferIsNotEnough=Não há estoque suficiente no armazém de origem -ShowWarehouse=Mostrar armazém MovementCorrectStock=Da correção para o produto %s MovementTransferStock=Da transferência de produto %s em um outro armazém InventoryCodeShort=Código mov./inv. diff --git a/htdocs/langs/pt_BR/suppliers.lang b/htdocs/langs/pt_BR/suppliers.lang index e09308099dbe86e73cf1aa70cb6784d53255d1a6..53be113f8b5969b08a0121eb99b59face5612ab7 100644 --- a/htdocs/langs/pt_BR/suppliers.lang +++ b/htdocs/langs/pt_BR/suppliers.lang @@ -1,12 +1,6 @@ # Dolibarr language file - Source file is en_US - suppliers -Suppliers=Fornecedores SuppliersInvoice=Faturas do Fornecedor ShowSupplierInvoice=Mostrar Fatura de Suprimentos -NewSupplier=Novo Fornecedor -History=Histórico -ListOfSuppliers=Lista de Fornecedores -ShowSupplier=Mostrar Fornecedor -OrderDate=Data Pedido BuyingPriceMin=Melhor preço de compra BuyingPriceMinShort=Melhor preço de compra TotalBuyingPriceMinShort=Total de precos de compra dos subprodutos @@ -15,22 +9,15 @@ SomeSubProductHaveNoPrices=Algums dos sub-produtos nao tem um preco definido AddSupplierPrice=Adicionar preço de compra ChangeSupplierPrice=Modificar preço de compra ReferenceSupplierIsAlreadyAssociatedWithAProduct=Esta referencia de fornecedor ja esta asociada com a referenca: %s -NoRecordedSuppliers=Sem Fornecedores Registados -SupplierPayment=Pagamento a Fornecedor -SuppliersArea=Área Fornecedores -RefSupplierShort=Ref. Fornecedor Availability=Entrega ExportDataset_fournisseur_1=Faturas de Fornecedores e Linhas de Fatura ExportDataset_fournisseur_2=Faturas Fornecedores e Pagamentos ExportDataset_fournisseur_3=Ordems de fornecedor e linhas de ordem -ApproveThisOrder=Aprovar este Pedido ConfirmApproveThisOrder=Tem certeza que deseja aprovar o pedido <b>%s</b>? DenyingThisOrder=Negar esta pedido ConfirmDenyingThisOrder=Você tem certeza que deseja negar este pedido <b>%s</b>? ConfirmCancelThisOrder=Você tem certeza que deseja cancelar este pedido <b>%s</b>? -AddSupplierOrder=Criar Pedido a Fornecedor AddSupplierInvoice=Criar Fatura do Fornecedor -ListOfSupplierProductForSupplier=Lista de produtos e preços do fornecedor <b>%s</b> SentToSuppliers=Enviado para fornecedores ListOfSupplierOrders=Lista de pedidos do fornecedor MenuOrdersSupplierToBill=Pedidos a se faturar do foprnecedor diff --git a/htdocs/langs/pt_BR/trips.lang b/htdocs/langs/pt_BR/trips.lang index bcdd035fceba88c432958b783cf261cf0d926b91..3a2032d05113a13cbfd99c1e066f09176b6afd95 100644 --- a/htdocs/langs/pt_BR/trips.lang +++ b/htdocs/langs/pt_BR/trips.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - trips -ExpenseReport=Relatório de despesas ExpenseReports=Os relatórios de despesas Trips=Os relatórios de despesas TripsAndExpenses=Relatórios de despesas @@ -7,81 +6,48 @@ TripsAndExpensesStatistics=Estatísticas de relatórios de despesas TripCard=Despesa de cartão de relatório AddTrip=Criar relatório de despesas ListOfTrips=Lista de relatórios de despesas -ListOfFees=Lista de Taxas ShowTrip=Mostrar relatório de despesas -NewTrip=Novo relatório de despesas -CompanyVisited=Empresa/Instituição Visitada FeesKilometersOrAmout=Quantidade de quilômetros DeleteTrip=Excluir relatório de despesas ConfirmDeleteTrip=Você tem certeza que deseja excluir este relatório de despesas? -ListTripsAndExpenses=Lista de relatórios de despesas ListToApprove=Esperando aprovação ExpensesArea=Área de relatórios de despesas ClassifyRefunded=Classificar 'Rembolsado' ExpenseReportWaitingForApproval=Um novo relatório de despesas foi apresentada para aprovação ExpenseReportWaitingForApprovalMessage=Um novo relatório de despesas foi apresentado e está aguardando aprovação.\n - Usuário: %s \n - Período: %s \n Clique aqui para autenticar: %s TripId=Id relatório de despesas -AnyOtherInThisListCanValidate=Pessoa para informar para validação. TripSociete=Informações da empresa TripNDF=Informações relatório de despesas PDFStandardExpenseReports=Template padrão para gerar um documento PDF para relatório de despesa ExpenseReportLine=Linha de relatório de despesas -TF_OTHER=Outro TF_TRIP=Transporte -TF_LUNCH=Alimentação -TF_METRO=Metro TF_TRAIN=Trem TF_BUS=Ônibus -TF_CAR=Carro TF_PEAGE=Pedágio -TF_ESSENCE=Combustível -TF_HOTEL=Hotel -TF_TAXI=Taxi - ErrorDoubleDeclaration=Você declarou outro relatório de despesas em um intervalo de datas semelhante. AucuneLigne=Não há relatório de despesas declaradas ainda - ModePaiement=Forma de pagamento - VALIDATOR=Usuário responsável pela aprovação -VALIDOR=Aprovado por AUTHOR=Registrado por AUTHORPAIEMENT=Pago por REFUSEUR=Negado pelo CANCEL_USER=Excluída por - MOTIF_REFUS=Razão MOTIF_CANCEL=Razão - DATE_REFUS=Negar data DATE_SAVE=Data de validação DATE_CANCEL=Data de cancelamento -DATE_PAIEMENT=Data de pagamento - -BROUILLONNER=Reabrir ValidateAndSubmit=Validar e submeter à aprovação ValidatedWaitingApproval=Validado (aguardando aprovação) - NOT_AUTHOR=Você não é o autor deste relatório de despesas. Operação cancelada. - ConfirmRefuseTrip=Você tem certeza que deseja recusar este relatório de despesas? - -ValideTrip=Aprovar relatório de despesas ConfirmValideTrip=Você tem certeza que deseja aprovar este relatório de despesas? - -PaidTrip=Pagar um relatório de despesas ConfirmPaidTrip=Você tem certeza que deseja mudar a situação deste relatório de despesas para "Pago"? - ConfirmCancelTrip=Você tem certeza que deseja cancelar este relatório de despesas? - BrouillonnerTrip=Voltar relatório de despesas para o status de "Rascunho" ConfirmBrouillonnerTrip=Você tem certeza que deseja alterar a situação deste relatório de despesas para "Rascunho"? - -SaveTrip=Validar relatório de despesas ConfirmSaveTrip=Você tem certeza que deseja validar este relatório de despesas? - NoTripsToExportCSV=Nenhum relatório de despesas para exportar para este período. ExpenseReportPayment=Despesa de pagamento de relatório - ExpenseReportsToApprove=Relatórios de despesas a confirmar ExpenseReportsToPay=Relatórios de despesas a pagar diff --git a/htdocs/langs/pt_BR/users.lang b/htdocs/langs/pt_BR/users.lang index f682cf4800af20f50c1b183ced75cef6aeb50dd1..57b1eda8352edb9f73285d24f75875ea6d749931 100644 --- a/htdocs/langs/pt_BR/users.lang +++ b/htdocs/langs/pt_BR/users.lang @@ -2,8 +2,6 @@ HRMArea=área de gestão de recursos humanos UserCard=Ficha de usuário GroupCard=Ficha de grupo -Permission=Permissão -Permissions=Permissões EditPassword=Alterar senha SendNewPassword=Enviar nova senha ReinitPassword=Gerar nova senha @@ -12,7 +10,6 @@ SubjectNewPassword=Sua nova senha para o Dolibarr GroupRights=Permissões do grupo UserRights=Permissões do usuário UserGUISetup=Interface do usuário -DisableUser=Desativar DisableAUser=Desativar um usuário DeleteUser=Excluir DeleteAUser=Excluir um usuário @@ -61,15 +58,11 @@ LinkedToDolibarrThirdParty=Atalho para um fornecedor do Dolibarr CreateDolibarrLogin=Criar uma usuário CreateDolibarrThirdParty=Criar um fornecedor LoginAccountDisableInDolibarr=A conta está desativada no Dolibarr -UsePersonalValue=Utilizar valores personalizados -InternalUser=Usuário Interno ExportDataset_user_1=Usuários e Atributos DomainUser=Usuário de Domínio -Reactivate=Reativar CreateInternalUserDesc=Este formulario permite criar um usuario interno a sua compania/fundação. Para criar um usuario externo (cliente, fornecedor, ...), use o botão 'Criar usuario Dolibarr' da ficha de contatos dos terceiro.. InternalExternalDesc=Um usuário <b>interno</b> é um usuário que pertence à sua Empresa/Instituição.<br>Um usuário <b>externo</b> é um usuário cliente, fornecedor ou outro.<br><br>Nos 2 casos, as permissões de Usuários definem os direitos de acesso, mas o usuário externo pode além disso ter um gerente de menus diferente do usuário interno (ver Inicio - configuração - visualização) PermissionInheritedFromAGroup=A permissão dá-se já que o herda de um grupo ao qual pertence o usuário. -Inherited=Herdado UserWillBeInternalUser=Usuario criado sera um usuario interno (porque nao esta conectado a um particular terceiro) UserWillBeExternalUser=Usuario criado sera um usuario externo (porque esta conectado a um particular terceiro) IdPhoneCaller=ID chamador (telefone) @@ -79,7 +72,6 @@ EventUserModified=Usuário %s Modificado UserDisabled=Usuário %s Desativado UserEnabled=Usuário %s Ativado UserDeleted=Usuário %s Eliminado -NewGroupCreated=Grupo %s Criado GroupModified=Grupo %s Alterado GroupDeleted=Grupo %s Eliminado ConfirmCreateContact=Tem certeza de que deseja criar uma conta Dolibarr para este contato? @@ -89,14 +81,12 @@ LoginToCreate=Login a Criar NameToCreate=Nome do Fornecedor a Criar YourRole=Suas funções YourQuotaOfUsersIsReached=Sua cota de usuarios ativos atingida ! -NbOfUsers=N. de usuarios +NbOfUsers=N. de usuarios DontDowngradeSuperAdmin=Somente um Super Administrador pode rebaixar um Super Administrador -HierarchicalResponsible=Supervisor HierarchicView=Visão hierárquica UseTypeFieldToChange=Use campo Tipo para mudar OpenIDURL=URL do OpenID LoginUsingOpenID=Usar o OpenID para efetuar o login -WeeklyHours=Horas semanais ColorUser=Cor do usuario DisabledInMonoUserMode=Desativado no modo de manutenção UserAccountancyCode=Código de contabilidade do usuário diff --git a/htdocs/langs/pt_BR/website.lang b/htdocs/langs/pt_BR/website.lang index 04e212a3217422cf8af0c3eb5cc9a9afd7c3abea..f474d2017ececd3d41bcc12a1c6f24675f8dc040 100644 --- a/htdocs/langs/pt_BR/website.lang +++ b/htdocs/langs/pt_BR/website.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - website -Shortname=Código WebsiteSetupDesc=Crie aqui o numero de entradas ao website que você precisa. Depois entre no menu websites para editá-las. DeleteWebsite=Apagar website ConfirmDeleteWebsite=Você tem certeza que deseja apagar este web site. Todas as páginas e conteúdos serão removidos. @@ -8,16 +7,12 @@ WEBSITE_CSS_URL=URL do arquivo CSS externo. WEBSITE_CSS_INLINE=Conteúdo CSS MediaFiles=Biblioteca de mídias EditCss=Editar Estilos/CSS -EditMenu=Editar Menu EditPageMeta=Editar Meta -EditPageContent=Editar Conteúdo Website=Web Site Webpage=Página na web -AddPage=Adicionar página PreviewOfSiteNotYetAvailable=A Pré-visualização do seu website <strong>%s</strong> ainda não está disponível. Primeiro você deverá adicionar uma página. RequestedPageHasNoContentYet=A página com id %s ainda não está disponível ou o arquivo .tpl.php em cache foi removido. Edite o conteúdo da página para resolver isso. PageDeleted=Página '%s' do website %s foi deletada -PageAdded=Página '%s' adicionada ViewSiteInNewTab=Visualizar site numa nova aba ViewPageInNewTab=Visualizar página numa nova aba SetAsHomePage=Definir com Página Inicial diff --git a/htdocs/langs/pt_BR/withdrawals.lang b/htdocs/langs/pt_BR/withdrawals.lang index 8c1b2cd9ece921ca04adbf4609c30014ee8f5c8e..0da54b70f29a3f2fdecbccbe5695b2393db9d7e8 100644 --- a/htdocs/langs/pt_BR/withdrawals.lang +++ b/htdocs/langs/pt_BR/withdrawals.lang @@ -1,8 +1,6 @@ # Dolibarr language file - Source file is en_US - withdrawals CustomersStandingOrdersArea=Área de pagamento dos pedidos com Débito direto SuppliersStandingOrdersArea=Área dos pedidos com pagamento por Crédito direto -StandingOrders=Pagamento dos pedidos com Débito direto -StandingOrder=Pedido com pagamento em Débito direto NewStandingOrder=Novo pedido para Débito direto StandingOrderToProcess=A Processar WithdrawalsReceipts=Pedidos com Débito direto @@ -15,11 +13,9 @@ NotPossibleForThisStatusOfWithdrawReceiptORLine=Ainda não é possível. Retirar NbOfInvoiceToWithdraw=Nº da fatura com pedido por Débito direto NbOfInvoiceToWithdrawWithInfo=Nº da fatura do cliente com pedidos para pagamento por Débito direto com informação bancária definida InvoiceWaitingWithdraw=Fatura aguardando o Débito direto -AmountToWithdraw=Quantidade a Levantar WithdrawsRefused=Débito direto recusado NoInvoiceToWithdraw=Nenhuma fatura a cliente com modo de pagamento 'Débito Directo' em espera. Ir ao separador 'Débito Directo' na ficha da fatura para fazer um pedido. ResponsibleUser=Usuário Responsável dos Débitos Diretos -WithdrawalsSetup=Configuração do pagamento por Débito direto WithdrawStatistics=Estatísticas do pagamento por Débito direto WithdrawRejectStatistics=Estatísticas de recusa do pagamento por Débito direto LastWithdrawalReceipt=Últimos %s recibos de Débito direto @@ -30,19 +26,14 @@ ClassCredited=Classificar Acreditados ClassCreditedConfirm=Você tem certeza que querer marcar este pagamento como realizado em a sua conta bancaria? TransData=Data da transferência TransMetod=Método de transferência -Send=Enviar -Lines=Linhas StandingOrderReject=Emitir uma recusa WithdrawalRefused=Retirada recusada WithdrawalRefusedConfirm=Você tem certeza que quer entrar com uma rejeição de retirada para a sociedade -RefusedData=Data de rejeição -RefusedReason=Motivo da rejeição RefusedInvoicing=Cobrança da rejeição NoInvoiceRefused=Não carregue a rejeição InvoiceRefused=Fatura recusada (Verificar a rejeição junto ao cliente) StatusWaiting=Aguardando StatusTrans=Enviado -StatusCredited=Creditado StatusRefused=Negado StatusMotif0=Não especificado StatusMotif1=Saldo insuficiente @@ -50,18 +41,13 @@ StatusMotif2=Solicitação contestada StatusMotif3=Nenhum pedido para pagamento por Débito direto StatusMotif4=Pedido do Cliente StatusMotif5=RIB inutilizável -StatusMotif6=Conta sem saldo -StatusMotif7=Decisão Judicial StatusMotif8=Outras razões CreateAll=Retirar tudo CreateGuichet=Apenas do escritório -CreateBanque=Apenas banco OrderWaiting=Aguardando resolução NotifyTransmision=Retirada de Transmissão NotifyCredit=Revogação de crédito NumeroNationalEmetter=Nacional Número Transmissor -WithBankUsingRIB=Para contas bancárias usando RIB -WithBankUsingBANBIC=Para contas bancárias usando IBAN / BIC / SWIFT BankToReceiveWithdraw=Conta bancária para receber o Débito direto CreditDate=A crédito WithdrawalFileNotCapable=Não foi possível gerar arquivos recibo retirada para o seu país %s (O seu país não é suportado) @@ -72,7 +58,6 @@ WithdrawalFile=Arquivo Retirada SetToStatusSent=Defina o status "arquivo enviado" ThisWillAlsoAddPaymentOnInvoice=Isto também se aplica aos pagamentos de faturas e classificá-los como "Paid" StatisticsByLineStatus=Estatísticas por situação de linhas -RUM=UMR RUMLong=Unique Mandate Reference (Referência Única de Mandato) RUMWillBeGenerated=Número UMR a ser gerado uma vez salva a informação da conta bancária WithdrawMode=Modo de Débito direto (FRST ou RECUR) @@ -92,8 +77,6 @@ SEPAFrstOrRecur=Tipo de pagamento ModeRECUR=Pagamento recorrente ModeFRST=Pagamento único PleaseCheckOne=Favor marcar apenas um - -### Notifications InfoCreditSubject=Pagamento do pedido com pagamento por Débito direto %s pelo banco InfoCreditMessage=O pagamento do pedido por Débito direto %s foi feito pelo banco.<br>Dados do pagamento: %s InfoTransSubject=Transmissão do pedido com pagamento por Débito direto %s para o banco diff --git a/htdocs/langs/ru_UA/banks.lang b/htdocs/langs/ru_UA/banks.lang index 26c1ff35d5965619da52a8d8d3dc8131d5fcf355..4273d5d84ec06068a4a0b92f2dbb6624a475e010 100644 --- a/htdocs/langs/ru_UA/banks.lang +++ b/htdocs/langs/ru_UA/banks.lang @@ -11,7 +11,6 @@ AccountStatementShort=Заявление AccountStatements=Выписки по счету BankAccountOwnerAddress=Адрес Владелец счета CreateAccount=Создать учетную запись -NewAccount=Новый LabelBankCashAccount=Банк или наличными этикетке AccountType=Тип счета BankType1=Текущие или кредитной карты diff --git a/htdocs/langs/ru_UA/install.lang b/htdocs/langs/ru_UA/install.lang index 0a8bf92a00d3bdf32b3d90927df6990b6b4f91b5..586cc57734d7c94578c643f403aa3b985add9992 100644 --- a/htdocs/langs/ru_UA/install.lang +++ b/htdocs/langs/ru_UA/install.lang @@ -37,7 +37,6 @@ PasswordAgain=Введите пароль еще раз во второй раз CheckToCreateUser=Флажок, если владелец базы данных не существует, и должен быть создан. <br> В этом случае, вы должны выбрать его Логин и пароль, а также заполнить Логин / пароль для суперпользователя в нижней части этой страницы. Если этот флажок не установлен, владелец базы данных и ее пароли должны существует. DatabaseRootLoginDescription=Войти на пользователя позволили создать новые базы данных или новых пользователей, бесполезны, если ваша база данных и база данных Войти уже существует (например, когда вы организовано провайдера веб-хостинг). ServerConnection=Соединение с сервером -UserCreation=Пользователь создания AdminAccountCreation=Администратор Войти создания PleaseTypePassword=Пожалуйста, введите пароль, пустые пароли не допускается! PleaseTypeALogin=Пожалуйста, введите Войти! diff --git a/htdocs/langs/ru_UA/other.lang b/htdocs/langs/ru_UA/other.lang index 67dab62c7cf93a940d617eef5cbe306e7336136f..7cb48758942920aca9fe72a1e6a66aa165ecc471 100644 --- a/htdocs/langs/ru_UA/other.lang +++ b/htdocs/langs/ru_UA/other.lang @@ -58,13 +58,6 @@ ResizeDesc=Введите новое значение ширины <b>или</b> NewLength=Новые ширина NewHeight=Новая высота NewSizeAfterCropping=Новый размер после обрезки -PropalClosedSignedInDolibarr=Предложение %s подписан в Dolibarr -PropalClosedRefusedInDolibarr=Предложение %s отказано в Dolibarr -PropalValidatedInDolibarr=Предложение %s подтверждены в Dolibarr -InvoiceValidatedInDolibarr=Счет %s подтверждены в Dolibarr -InvoicePaidInDolibarr=Счет %s изменено на выплачиваются в Dolibarr -InvoiceCanceledInDolibarr=Счет %s отменен в Dolibarr -MemberValidatedInDolibarr=Член %s подтверждены в Dolibarr LibraryUsed=Librairy использоваться LibraryVersion=Версия ExportableDatas=Экспортные данные diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index d20cbdb15669a1feddc76aba1c2d36acc8443d34..12ed77dd36efe9b4baf761e2bf37b21c611c55e1 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1040,7 +1040,16 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs $ext='version='.urlencode(DOL_VERSION); if (GETPOST('version')) $ext='version='.GETPOST('version','int'); // usefull to force no cache on css/js if (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)) $ext='testmenuhider='.GETPOST('testmenuhider','int'); - + + $themeparam='?lang='.$langs->defaultlang.'&theme='.$conf->theme.(GETPOST('optioncss')?'&optioncss='.GETPOST('optioncss','alpha',1):'').'&userid='.$user->id.'&entity='.$conf->entity; + $themeparam.=($ext?'&'.$ext:''); + if (! empty($_SESSION['dol_resetcache'])) $themeparam.='&dol_resetcache='.$_SESSION['dol_resetcache']; + if (GETPOST('dol_hide_topmenu')) { $themeparam.='&dol_hide_topmenu='.GETPOST('dol_hide_topmenu','int'); } + if (GETPOST('dol_hide_leftmenu')) { $themeparam.='&dol_hide_leftmenu='.GETPOST('dol_hide_leftmenu','int'); } + if (GETPOST('dol_optimize_smallscreen')) { $themeparam.='&dol_optimize_smallscreen='.GETPOST('dol_optimize_smallscreen','int'); } + if (GETPOST('dol_no_mouse_hover')) { $themeparam.='&dol_no_mouse_hover='.GETPOST('dol_no_mouse_hover','int'); } + if (GETPOST('dol_use_jmobile')) { $themeparam.='&dol_use_jmobile='.GETPOST('dol_use_jmobile','int'); $conf->dol_use_jmobile=GETPOST('dol_use_jmobile','int'); } + if (! defined('DISABLE_JQUERY') && ! $disablejs && $conf->use_javascript_ajax) { print '<!-- Includes CSS for JQuery (Ajax library) -->'."\n"; @@ -1070,7 +1079,11 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs // jQuery jMobile if (! $disablejmobile && (! empty($conf->global->MAIN_USE_JQUERY_JMOBILE) || defined('REQUIRE_JQUERY_JMOBILE') || ! empty($conf->dol_use_jmobile))) { - print '<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/includes/jquery/plugins/mobile/jquery.mobile-latest.min.css'.($ext?'?'.$ext:'').'">'."\n"; + $tmp=basename($_SERVER["PHP_SELF"]); + if ($tmp == 'get_menudiv.php' || $conf->dol_use_jmobile == 4) + { + print '<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/includes/jquery/plugins/mobile/jquery.mobile-latest.min.css'.($ext?'?'.$ext:'').'">'."\n"; + } } } @@ -1091,14 +1104,6 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs } } } - $themeparam='?lang='.$langs->defaultlang.'&theme='.$conf->theme.(GETPOST('optioncss')?'&optioncss='.GETPOST('optioncss','alpha',1):'').'&userid='.$user->id.'&entity='.$conf->entity; - $themeparam.=($ext?'&'.$ext:''); - if (! empty($_SESSION['dol_resetcache'])) $themeparam.='&dol_resetcache='.$_SESSION['dol_resetcache']; - if (GETPOST('dol_hide_topmenu')) { $themeparam.='&dol_hide_topmenu='.GETPOST('dol_hide_topmenu','int'); } - if (GETPOST('dol_hide_leftmenu')) { $themeparam.='&dol_hide_leftmenu='.GETPOST('dol_hide_leftmenu','int'); } - if (GETPOST('dol_optimize_smallscreen')) { $themeparam.='&dol_optimize_smallscreen='.GETPOST('dol_optimize_smallscreen','int'); } - if (GETPOST('dol_no_mouse_hover')) { $themeparam.='&dol_no_mouse_hover='.GETPOST('dol_no_mouse_hover','int'); } - if (GETPOST('dol_use_jmobile')) { $themeparam.='&dol_use_jmobile='.GETPOST('dol_use_jmobile','int'); $conf->dol_use_jmobile=GETPOST('dol_use_jmobile','int'); } //print 'themepath='.$themepath.' themeparam='.$themeparam;exit; print '<link rel="stylesheet" type="text/css" href="'.$themepath.$themeparam.'">'."\n"; if (! empty($conf->global->MAIN_FIX_FLASH_ON_CHROME)) print '<!-- Includes CSS that does not exists as workaround of flash bug of chrome -->'."\n".'<link rel="stylesheet" type="text/css" href="filethatdoesnotexiststosolvechromeflashbug">'."\n"; @@ -1244,32 +1249,36 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs // We must force not using ajax because cache of jquery does not load js of other pages. // This also increase seriously speed onto mobile device where complex js code is very slow and memory very low. // Note: dol_use_jmobile=1 use jmobile without ajax, dol_use_jmobile=2 use jmobile with ajax - if (empty($conf->dol_use_jmobile) || ($conf->dol_use_jmobile != 2 && $conf->dol_use_jmobile != 3)) - { - print '<script type="text/javascript"> - $(document).bind("mobileinit", function() { - '; - if ($conf->theme == 'md') - { - print ' - /* Disabled decoration for some css */ - $.mobile.keepNative = \'input[type="submit"]\'; /* jQuery Mobile 1.4 and higher */ - $.mobile.page.prototype.options.keepNative = \'input[type="submit"]\'; /* jQuery Mobile 1.4 and lower */ - '; - } - print ' - $.extend( $.mobile , { - autoInitializePage : true, /* We need this to run jmobile */ - /* loadingMessage : \'xxxxx\', */ - touchOverflowEnabled : true, - defaultPageTransition : \'none\', - defaultDialogTransition : \'none\', - ajaxEnabled : false /* old param was ajaxFormsEnabled and ajaxLinksEnabled */ - }); - }); - </script>'; - } - if (empty($conf->dol_use_jmobile) || $conf->dol_use_jmobile != 3) print '<script type="text/javascript" src="'.DOL_URL_ROOT.'/includes/jquery/plugins/mobile/jquery.mobile-latest.min.js'.($ext?'?'.$ext:'').'"></script>'."\n"; + // 3=??? + // 4=all pages, not only menu + $tmp=basename($_SERVER["PHP_SELF"]); + if ($tmp == 'get_menudiv.php' || $conf->dol_use_jmobile == 4) + { + if (empty($conf->dol_use_jmobile) || ($conf->dol_use_jmobile != 2 && $conf->dol_use_jmobile != 3)) + { + print '<script type="text/javascript"> + $(document).bind("mobileinit", function() { + '; + if ($conf->theme == 'md') + { + // Disabled decoration for some css + print ' + $.mobile.keepNative = \'input[type="submit"]\'; + '; + } + print ' + $.extend( $.mobile , { + autoInitializePage : true, + touchOverflowEnabled : true, + defaultPageTransition : \'none\', + defaultDialogTransition : \'none\', + ajaxEnabled : false + }); + }); + </script>'; + } + if (empty($conf->dol_use_jmobile) || $conf->dol_use_jmobile != 3) print '<script type="text/javascript" src="'.DOL_URL_ROOT.'/includes/jquery/plugins/mobile/jquery.mobile-latest.min.js'.($ext?'?'.$ext:'').'"></script>'."\n"; + } } } @@ -1878,7 +1887,7 @@ if (! function_exists("llxFooter")) print '<div class="error">'.$msg.'</div>'; } - define("MAIN_CORE_ERROR",0); + //define("MAIN_CORE_ERROR",0); // Constant was defined and we can't change value of a constant } print "\n\n"; @@ -1898,7 +1907,7 @@ if (! function_exists("llxFooter")) if (! empty($delayedhtmlcontent)) print $delayedhtmlcontent; // Wrapper to show tooltips - if ($conf->use_javascript_ajax) + if (! empty($conf->use_javascript_ajax) && empty($conf->dol_no_mouse_hover)) { print "\n<!-- JS CODE TO ENABLE tipTip on all object with class classfortooltip -->\n"; print '<script type="text/javascript"> diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 0a493ef60bc0a8f29e6ece502865094fbf84930a..b4a3f8ab420a413cf7fb21a20b5bb6d1bea38f6d 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -636,7 +636,7 @@ if (empty($reshook)) $pu_ht = price($prodcustprice->lines [0]->price); $pu_ttc = price($prodcustprice->lines [0]->price_ttc); $price_base_type = $prodcustprice->lines [0]->price_base_type; - $prod->tva_tx = $prodcustprice->lines [0]->tva_tx; + $tva_tx = $prodcustprice->lines [0]->tva_tx; } } } diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 7e3f337ed3b6f5a458d8b15285cb5c02696eedaa..56a00b2419d939e88124bac8c33728f44d1211a5 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1986,6 +1986,30 @@ class Product extends CommonObject $this->stats_commande['nb']=$obj->nb; $this->stats_commande['rows']=$obj->nb_rows; $this->stats_commande['qty']=$obj->qty?$obj->qty:0; + + // if it's a virtual product, maybe it is in order by extension + if (! empty($conf->global->ORDER_ADD_ORDERS_WITH_PARENT_PROD_IF_INCDEC)) + { + $TFather = $this->getFather(); + if (is_array($TFather) && !empty($TFather)) { + foreach($TFather as &$fatherData) { + $pFather = new Product($this->db); + $pFather->id = $fatherData['id']; + $qtyCoef = $fatherData['qty']; + + if ($fatherData['incdec']) { + $pFather->load_stats_commande($socid, $filtrestatut); + + $this->stats_commande['customers']+=$pFather->stats_commande['customers']; + $this->stats_commande['nb']+=$pFather->stats_commande['nb']; + $this->stats_commande['rows']+=$pFather->stats_commande['rows']; + $this->stats_commande['qty']+=$pFather->stats_commande['qty'] * $qtyCoef; + + } + } + } + } + return 1; } else @@ -3159,17 +3183,21 @@ class Product extends CommonObject if (! empty($this->label)) $label .= '<br><b>' . $langs->trans('ProductLabel') . ':</b> ' . $this->label; - $tmptext=''; - if ($this->weight) $tmptext.="<br><b>".$langs->trans("Weight").'</b>: '.$this->weight.' '.measuring_units_string($this->weight_units,"weight"); - if ($this->length) $tmptext.="<br><b>".$langs->trans("Length").'</b>: '.$this->length.' '.measuring_units_string($this->length_units,'length'); - if ($this->surface) $tmptext.="<br><b>".$langs->trans("Surface").'</b>: '.$this->surface.' '.measuring_units_string($this->surface_units,'surface'); - if ($this->volume) $tmptext.="<br><b>".$langs->trans("Volume").'</b>: '.$this->volume.' '.measuring_units_string($this->volume_units,'volume'); - if ($tmptext) $label .= $tmptext; - if (! empty($conf->productbatch->enabled)) + if ($this->type == Product::TYPE_PRODUCT) + { + if ($this->weight) $label.="<br><b>".$langs->trans("Weight").'</b>: '.$this->weight.' '.measuring_units_string($this->weight_units,"weight"); + if ($this->length) $label.="<br><b>".$langs->trans("Length").'</b>: '.$this->length.' '.measuring_units_string($this->length_units,'length'); + if ($this->surface) $label.="<br><b>".$langs->trans("Surface").'</b>: '.$this->surface.' '.measuring_units_string($this->surface_units,'surface'); + if ($this->volume) $label.="<br><b>".$langs->trans("Volume").'</b>: '.$this->volume.' '.measuring_units_string($this->volume_units,'volume'); + if (! empty($conf->productbatch->enabled)) + { + $label.="<br><b>".$langs->trans("ManageLotSerial").'</b>: '.$this->getLibStatut(0,2); + } + } + if ($this->type == Product::TYPE_SERVICE) { - $tmptext.="<br><b>".$langs->trans("ManageLotSerial").'</b>: '.$this->getLibStatut(0,2); + // } - $label.=$tmptext; if (! empty($this->entity)) $label .= '<br>' . $this->show_photos($conf->product->multidir_output[$this->entity],1,1,0,0,0,80); diff --git a/htdocs/product/stock/tpl/stockcorrection.tpl.php b/htdocs/product/stock/tpl/stockcorrection.tpl.php index 9277de5b49805aa793be8ae4550c6d0478a57433..0b48be2b0d5f38ac0bdd020b6c3ae22034f3c319 100644 --- a/htdocs/product/stock/tpl/stockcorrection.tpl.php +++ b/htdocs/product/stock/tpl/stockcorrection.tpl.php @@ -110,7 +110,7 @@ print '<td colspan="2">'; print '<input type="text" name="label" size="60" value="'.$valformovementlabel.'">'; print '</td>'; - print '<td width="20%">'.$langs->trans("InventoryCode").'</td><td width="20%"><input class="flat" name="inventorycode" id="inventorycode" size="14" value="'.GETPOST("inventorycode").'"></td>'; + print '<td width="20%">'.$langs->trans("InventoryCode").'</td><td width="20%"><input class="flat maxwidth100onsmartphone" name="inventorycode" id="inventorycode" value="'.GETPOST("inventorycode").'"></td>'; print '</tr>'; print '</table>'; diff --git a/htdocs/product/stock/tpl/stocktransfer.tpl.php b/htdocs/product/stock/tpl/stocktransfer.tpl.php index 98fe80f7c90a0c8c8ed187915c0a139a98c44ddd..dfddd1e19f1edc1eba75588f5501d80bc039ee12 100644 --- a/htdocs/product/stock/tpl/stocktransfer.tpl.php +++ b/htdocs/product/stock/tpl/stocktransfer.tpl.php @@ -117,7 +117,7 @@ print '<td colspan="3">'; print '<input type="text" name="label" size="60" value="'.dol_escape_htmltag($valformovementlabel).'">'; print '</td>'; - print '<td width="20%">'.$langs->trans("InventoryCode").'</td><td width="20%"><input class="flat" name="inventorycode" id="inventorycode" size="14" value="'.(GETPOST("inventorycode")?GETPOST("inventorycode",'alpha'):dol_print_date(dol_now(),'%y%m%d%H%M%S')).'"></td>'; + print '<td width="20%">'.$langs->trans("InventoryCode").'</td><td width="20%"><input class="flat maxwidth100onsmartphone" name="inventorycode" id="inventorycode" value="'.(GETPOST("inventorycode")?GETPOST("inventorycode",'alpha'):dol_print_date(dol_now(),'%y%m%d%H%M%S')).'"></td>'; print '</tr>'; print '</table>'; diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index f4c5d871fc6c26ccea0571208e706093bbbc487c..5e639f6c92003b423dd53b18385847fd36087f46 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -698,7 +698,7 @@ else // Label print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td>'; - print '<td><input size="80" name="title" value="'.$object->title.'"></td></tr>'; + print '<td><input class="quatrevingtpercent" name="title" value="'.$object->title.'"></td></tr>'; // Thirdparty if ($conf->societe->enabled) @@ -752,7 +752,7 @@ else // Date start print '<tr><td>'.$langs->trans("DateStart").'</td><td>'; print $form->select_date($object->date_start?$object->date_start:-1,'projectstart',0,0,0,'',1,0,1); - print ' <input type="checkbox" name="reportdate" value="yes" '; + print ' <input type="checkbox" class="valignmiddle" name="reportdate" value="yes" '; if ($comefromclone){print ' checked ';} print '/> '. $langs->trans("ProjectReportDate"); print '</td></tr>'; @@ -829,33 +829,12 @@ else print '<table class="border" width="100%">'; - // Ref - /* - print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'; - print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref'); - print '</td></tr>'; - */ - - // Label - //print '<tr><td>'.$langs->trans("Label").'</td><td>'.$object->title.'</td></tr>'; - - // Third party - /* - print '<tr><td class="titlefield">'.$langs->trans("ThirdParty").'</td><td>'; - if ($object->thirdparty->id > 0) print $object->thirdparty->getNomUrl(1, 'project'); - else print' '; - print '</td></tr>'; - */ - // Visibility print '<tr><td class="titlefield">'.$langs->trans("Visibility").'</td><td>'; if ($object->public) print $langs->trans('SharedProject'); else print $langs->trans('PrivateProject'); print '</td></tr>'; - // Statut - //print '<tr><td>'.$langs->trans("Status").'</td><td>'.$object->getLibStatut(4).'</td></tr>'; - if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { // Opportunity status @@ -879,7 +858,11 @@ else print '<tr><td>'.$langs->trans("DateStart").' - '.$langs->trans("DateEnd").'</td><td>'; print dol_print_date($object->date_start,'day'); $end=dol_print_date($object->date_end,'day'); - if ($end) print ' - '.$end; + if ($end) + { + print ' - '.$end; + if ($object->hasDelay()) print img_warning($langs->trans('Late')); + } print '</td></tr>'; // Budget diff --git a/htdocs/projet/class/api_projects.class.php b/htdocs/projet/class/api_projects.class.php new file mode 100644 index 0000000000000000000000000000000000000000..74650407f8728ad54d49bd923010321bdca251ba --- /dev/null +++ b/htdocs/projet/class/api_projects.class.php @@ -0,0 +1,568 @@ +<?php +/* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> + * Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + + use Luracast\Restler\RestException; + + require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; + +/** + * API class for projects + * + * @access protected + * @class DolibarrApiAccess {@requires user,external} + */ +class Projects extends DolibarrApi +{ + + /** + * @var array $FIELDS Mandatory fields, checked when create and update object + */ + static $FIELDS = array( + 'ref', + 'title' + ); + + /** + * @var Project $project {@type Project} + */ + public $project; + + /** + * Constructor + */ + function __construct() + { + global $db, $conf; + $this->db = $db; + $this->project = new Project($this->db); + } + + /** + * Get properties of a project object + * + * Return an array with project informations + * + * @param int $id ID of project + * @return array|mixed data without useless information + * + * @throws RestException + */ + function get($id) + { + if(! DolibarrApiAccess::$user->rights->projet->lire) { + throw new RestException(401); + } + + $result = $this->project->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Project not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $this->project->fetchObjectLinked(); + return $this->_cleanObjectDatas($this->project); + } + + + + /** + * List projects + * + * Get a list of projects + * + * @param string $sortfield Sort field + * @param string $sortorder Sort order + * @param int $limit Limit for list + * @param int $page Page number + * @param string $thirdparty_ids Thirdparty ids to filter projects of. {@example '1' or '1,2,3'} {@pattern /^[0-9,]*$/i} + * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" + * @return array Array of project objects + */ + function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $thirdparty_ids = '', $sqlfilters = '') { + global $db, $conf; + + $obj_ret = array(); + // case of external user, $thirdpartyid param is ignored and replaced by user's socid + $socids = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $thirdparty_ids; + + // If the internal user must only see his customers, force searching by him + if (! DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) $search_sale = DolibarrApiAccess::$user->id; + + $sql = "SELECT t.rowid"; + if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects) + $sql.= " FROM ".MAIN_DB_PREFIX."projet as t"; + + if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale + + $sql.= ' WHERE t.entity IN ('.getEntity('project', 1).')'; + if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql.= " AND t.fk_soc = sc.fk_soc"; + if ($socids) $sql.= " AND t.fk_soc IN (".$socids.")"; + if ($search_sale > 0) $sql.= " AND t.rowid = sc.fk_soc"; // Join for the needed table to filter by sale + // Insert sale filter + if ($search_sale > 0) + { + $sql .= " AND sc.fk_user = ".$search_sale; + } + // Add sql filters + if ($sqlfilters) + { + if (! DolibarrApi::_checkFilters($sqlfilters)) + { + throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); + } + $regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; + $sql.=" AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; + } + + $sql.= $db->order($sortfield, $sortorder); + if ($limit) { + if ($page < 0) + { + $page = 0; + } + $offset = $limit * $page; + + $sql.= $db->plimit($limit + 1, $offset); + } + + dol_syslog("API Rest request"); + $result = $db->query($sql); + + if ($result) + { + $num = $db->num_rows($result); + while ($i < min($num, ($limit <= 0 ? $num : $limit))) + { + $obj = $db->fetch_object($result); + $project_static = new Project($db); + if($project_static->fetch($obj->rowid)) { + $obj_ret[] = parent::_cleanObjectDatas($project_static); + } + $i++; + } + } + else { + throw new RestException(503, 'Error when retrieve project list'); + } + if( ! count($obj_ret)) { + throw new RestException(404, 'No project found'); + } + return $obj_ret; + } + + /** + * Create project object + * + * @param array $request_data Request data + * @return int ID of project + */ + function post($request_data = NULL) + { + if(! DolibarrApiAccess::$user->rights->projet->creer) { + throw new RestException(401, "Insuffisant rights"); + } + // Check mandatory fields + $result = $this->_validate($request_data); + + foreach($request_data as $field => $value) { + $this->project->$field = $value; + } + /*if (isset($request_data["lines"])) { + $lines = array(); + foreach ($request_data["lines"] as $line) { + array_push($lines, (object) $line); + } + $this->project->lines = $lines; + }*/ + if ($this->project->create(DolibarrApiAccess::$user) <= 0) { + $errormsg = $this->project->error; + throw new RestException(500, $errormsg ? $errormsg : "Error while creating project"); + } + + return $this->project->id; + } + + /** + * Get tasks of a project + * + * @param int $id Id of project + * + * @url GET {id}/tasks + * + * @return int + */ + function getLines($id) { + if(! DolibarrApiAccess::$user->rights->projet->lire) { + throw new RestException(401); + } + + $result = $this->project->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Project not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $this->project->getLinesArray(DolibarrApiAccess::$user); + $result = array(); + foreach ($this->project->lines as $line) { + array_push($result,$this->_cleanObjectDatas($line)); + } + return $result; + } + + + /** + * Get users and roles assigned to a project + * + * @param int $id Id of project + * + * @url GET {id}/roles + * + * @return int + */ + function getRoles($id) { + if(! DolibarrApiAccess::$user->rights->projet->lire) { + throw new RestException(401); + } + + $result = $this->project->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Project not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; + $taskstatic=new Task($this->db); + $this->project->roles = $taskstatic->getUserRolesForProjectsOrTasks(DolibarrApiAccess::$user, 0, $id, 0); + $result = array(); + foreach ($this->project->roles as $line) { + array_push($result,$this->_cleanObjectDatas($line)); + } + return $result; + } + + + /** + * Add a task to given project + * + * @param int $id Id of project to update + * @param array $request_data Projectline data + * + * @url POST {id}/tasks + * + * @return int + */ + /* + function postLine($id, $request_data = NULL) { + if(! DolibarrApiAccess::$user->rights->projet->creer) { + throw new RestException(401); + } + + $result = $this->project->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Project not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $request_data = (object) $request_data; + $updateRes = $this->project->addline( + $request_data->desc, + $request_data->subprice, + $request_data->qty, + $request_data->tva_tx, + $request_data->localtax1_tx, + $request_data->localtax2_tx, + $request_data->fk_product, + $request_data->remise_percent, + $request_data->info_bits, + $request_data->fk_remise_except, + 'HT', + 0, + $request_data->date_start, + $request_data->date_end, + $request_data->product_type, + $request_data->rang, + $request_data->special_code, + $fk_parent_line, + $request_data->fk_fournprice, + $request_data->pa_ht, + $request_data->label, + $request_data->array_options, + $request_data->fk_unit, + $this->element, + $request_data->id + ); + + if ($updateRes > 0) { + return $this->get($id)->line->rowid; + + } + return false; + } + */ + + /** + * Update a task to given project + * + * @param int $id Id of project to update + * @param int $lineid Id of line to update + * @param array $request_data Projectline data + * + * @url PUT {id}/tasks/{lineid} + * + * @return object + */ + /* + function putLine($id, $lineid, $request_data = NULL) { + if(! DolibarrApiAccess::$user->rights->projet->creer) { + throw new RestException(401); + } + + $result = $this->project->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Project not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $request_data = (object) $request_data; + $updateRes = $this->project->updateline( + $lineid, + $request_data->desc, + $request_data->subprice, + $request_data->qty, + $request_data->remise_percent, + $request_data->tva_tx, + $request_data->localtax1_tx, + $request_data->localtax2_tx, + 'HT', + $request_data->info_bits, + $request_data->date_start, + $request_data->date_end, + $request_data->product_type, + $request_data->fk_parent_line, + 0, + $request_data->fk_fournprice, + $request_data->pa_ht, + $request_data->label, + $request_data->special_code, + $request_data->array_options, + $request_data->fk_unit + ); + + if ($updateRes > 0) { + $result = $this->get($id); + unset($result->line); + return $this->_cleanObjectDatas($result); + } + return false; + }*/ + + + /** + * Delete a tasks of given project + * + * + * @param int $id Id of project to update + * @param int $taskid Id of task to delete + * + * @url DELETE {id}/tasks/{taskid} + * + * @return int + */ + function delLine($id, $taskid) { + if(! DolibarrApiAccess::$user->rights->projet->creer) { + throw new RestException(401); + } + + $result = $this->project->fetch($id); + if( ! ($result > 0) ) { + throw new RestException(404, 'Project not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; + $taskstatic=new Task($this->db); + $result = $taskstatic->fetch($taskid); + if( ! ($result > 0) ) { + throw new RestException(404, 'Task not found'); + } + + $deleteRes = $taskstatic->delete(DolibarrApiAccess::$user); + + if( ! ($deleteRes > 0)) { + throw new RestException(500, 'Error when delete tasks : '.$taskstatic->error); + } + + return array( + 'success' => array( + 'code' => 200, + 'message' => 'Task deleted' + ) + ); + } + + + /** + * Update project general fields (won't touch lines of project) + * + * @param int $id Id of project to update + * @param array $request_data Datas + * + * @return int + */ + function put($id, $request_data = NULL) { + if(! DolibarrApiAccess::$user->rights->projet->creer) { + throw new RestException(401); + } + + $result = $this->project->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Project not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + foreach($request_data as $field => $value) { + $this->project->$field = $value; + } + + if($this->project->update(DolibarrApiAccess::$user, 0)) + return $this->get($id); + + return false; + } + + /** + * Delete project + * + * @param int $id Project ID + * + * @return array + */ + function delete($id) + { + if(! DolibarrApiAccess::$user->rights->projet->supprimer) { + throw new RestException(401); + } + $result = $this->project->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Project not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + if( ! $this->project->delete(DolibarrApiAccess::$user)) { + throw new RestException(500, 'Error when delete project : '.$this->project->error); + } + + return array( + 'success' => array( + 'code' => 200, + 'message' => 'Project deleted' + ) + ); + + } + + /** + * Validate a project + * + * @param int $id Project ID + * @param int $notrigger 1=Does not execute triggers, 0= execute triggers + * + * @url POST {id}/validate + * + * @return array + * FIXME An error 403 is returned if the request has an empty body. + * Error message: "Forbidden: Content type `text/plain` is not supported." + * Workaround: send this in the body + * { + * "notrigger": 0 + * } + */ + function validate($id, $notrigger=0) + { + if(! DolibarrApiAccess::$user->rights->projet->creer) { + throw new RestException(401); + } + $result = $this->project->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Project not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $result = $this->project->setValid(DolibarrApiAccess::$user, $notrigger); + if ($result == 0) { + throw new RestException(500, 'Error nothing done. May be object is already validated'); + } + if ($result < 0) { + throw new RestException(500, 'Error when validating Project: '.$this->project->error); + } + + return array( + 'success' => array( + 'code' => 200, + 'message' => 'Project validated' + ) + ); + } + + /** + * Validate fields before create or update object + * + * @param array $data Array with data to verify + * @return array + * @throws RestException + */ + function _validate($data) + { + $object = array(); + foreach (self::$FIELDS as $field) { + if (!isset($data[$field])) + throw new RestException(400, "$field field missing"); + $object[$field] = $data[$field]; + + } + return $object; + } + + + // TODO + // getSummaryOfTimeSpent +} diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 4ac568182de6e287a98fc0d5da2376bac73f0620..cdddccbf432b92f5dd09e8e463548da9631d7154 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -241,7 +241,15 @@ class Project extends CommonObject $this->description = trim($this->description); if ($this->opp_amount < 0) $this->opp_amount=''; if ($this->opp_percent < 0) $this->opp_percent=''; - + if ($this->date_end && $this->date_end < $this->date_start) + { + $this->error = $langs->trans("ErrorDateEndLowerThanDateStart"); + $this->errors[] = $this->error; + $this->db->rollback(); + dol_syslog(get_class($this)."::update error -3 " . $this->error, LOG_ERR); + return -3; + } + if (dol_strlen(trim($this->ref)) > 0) { $this->db->begin(); @@ -695,10 +703,11 @@ class Project extends CommonObject /** * Validate a project * - * @param User $user User that validate - * @return int <0 if KO, >0 if OK + * @param User $user User that validate + * @param int $notrigger 1=Disable triggers + * @return int <0 if KO, >0 if OK */ - function setValid($user) + function setValid($user, $notrigger=0) { global $langs, $conf; @@ -725,10 +734,13 @@ class Project extends CommonObject if ($resql) { // Call trigger - $result=$this->call_trigger('PROJECT_VALIDATE',$user); - if ($result < 0) { $error++; } - // End call triggers - + if (empty($notrigger)) + { + $result=$this->call_trigger('PROJECT_VALIDATE',$user); + if ($result < 0) { $error++; } + // End call triggers + } + if (!$error) { $this->statut=1; @@ -1750,12 +1762,12 @@ class Project extends CommonObject global $conf; if (! ($this->statut == 1)) return false; - if (! $this->datee) return false; + if (! $this->datee && ! $this->date_end) return false; $now = dol_now(); - return $this->datee < ($now - $conf->projet->warning_delay); - } + return ($this->datee ? $this->datee : $this->date_end) < ($now - $conf->projet->warning_delay); + } /** @@ -1866,5 +1878,20 @@ class Project extends CommonObject return 1; } + + /** + * Create an array of tasks of current project + * + * @param User $user Object user we want project allowed to + * @return int >0 if OK, <0 if KO + */ + function getLinesArray($user) + { + require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; + $taskstatic = new Task($this->db); + + $this->lines = $taskstatic->getTasksArray(0, $user, $this->id, 0, 0); + } + } diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index ad2f5faecbe751e4665267e1cc8499b7ad3e3b40..2baccfb3382db2d7fcf3b92367d1ed1417667b31 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -176,7 +176,7 @@ class Task extends CommonObject * * @param int $id Id object * @param int $ref ref object - * @return int <0 if KO, >0 if OK + * @return int <0 if KO, 0 if not found, >0 if OK */ function fetch($id,$ref='') { @@ -214,7 +214,9 @@ class Task extends CommonObject $resql=$this->db->query($sql); if ($resql) { - if ($this->db->num_rows($resql)) + $num_rows = $this->db->num_rows($resql); + + if ($num_rows) { $obj = $this->db->fetch_object($resql); @@ -241,7 +243,8 @@ class Task extends CommonObject $this->db->free($resql); - return 1; + if ($num_rows) return 1; + else return 0; } else { @@ -754,7 +757,7 @@ class Task extends CommonObject * Return list of roles for a user for each projects or each tasks (or a particular project or a particular task). * * @param User $userp Return roles on project for this internal user. If set, usert and taskid must not be defined. - * @param User $usert Return roles on task for this internal user. If set userp must not be defined. + * @param User $usert Return roles on task for this internal user. If set userp must not be defined. -1 means no filter. * @param int $projectid Project id list separated with , to filter on project * @param int $taskid Task id to filter on a task * @param string $filteronprojstatus Filter on project status if userp is set. Not used if userp not defined. diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index e94042f43d3c6eb6e01dd2fb0fa42b0612ad7443..958f0b242a255b5f4ded29dca14ced45942087c2 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -506,8 +506,8 @@ foreach ($listofreferent as $key => $value) $element->fetch($idofelement); if ($idofelementuser) $elementuser->fetch($idofelementuser); + // Special cases if ($tablename != 'expensereport_det' && method_exists($element, 'fetch_thirdparty')) $element->fetch_thirdparty(); - if ($tablename == 'don') $total_ht_by_line=$element->amount; elseif ($tablename == 'projet_task') { @@ -737,6 +737,7 @@ foreach ($listofreferent as $key => $value) $element->fetch($idofelement); if ($idofelementuser) $elementuser->fetch($idofelementuser); + // Special cases if ($tablename != 'expensereport_det') { if(method_exists($element, 'fetch_thirdparty')) $element->fetch_thirdparty(); @@ -787,28 +788,34 @@ foreach ($listofreferent as $key => $value) } else { + // Show ref with link if ($element instanceof Task) { print $element->getNomUrl(1,'withproject','time'); print ' - '.dol_trunc($element->label, 48); } else print $element->getNomUrl(1); - + $element_doc = $element->element; $filename=dol_sanitizeFileName($element->ref); $filedir=$conf->{$element_doc}->dir_output . '/' . dol_sanitizeFileName($element->ref); - if($element_doc === 'order_supplier') { + if ($element_doc === 'order_supplier') { $element_doc='commande_fournisseur'; $filedir = $conf->fournisseur->commande->dir_output.'/'.dol_sanitizeFileName($element->ref); } - else if($element_doc === 'invoice_supplier') { + else if ($element_doc === 'invoice_supplier') { $element_doc='facture_fournisseur'; $filename = get_exdir($element->id,2,0,0,$this,'product').dol_sanitizeFileName($element->ref); $filedir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($element->id,2,0,0,null,'invoice_supplier').dol_sanitizeFileName($element->ref); } - print $formfile->getDocumentsLink($element_doc, $filename, $filedir); + print '<div class="inline-block valignmiddle">'.$formfile->getDocumentsLink($element_doc, $filename, $filedir).'</div>'; + + // Show supplier ref + if (! empty($element->ref_supplier)) print ' - '.$element->ref_supplier; + // Show customer ref + if (! empty($element->ref_customer)) print ' - '.$element->ref_customer; } print "</td>\n"; diff --git a/htdocs/projet/graph_opportunities.inc.php b/htdocs/projet/graph_opportunities.inc.php index 673fbc973ad61d72837c48cd8f6a737e100d0eae..b763240500fe299c1e43bb2b52be1e2c6ae5f307 100644 --- a/htdocs/projet/graph_opportunities.inc.php +++ b/htdocs/projet/graph_opportunities.inc.php @@ -83,8 +83,8 @@ if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) } //if ($totalinprocess != $total) //print '<tr class="liste_total"><td>'.$langs->trans("Total").' ('.$langs->trans("CustomersOrdersRunning").')</td><td align="right">'.$totalinprocess.'</td></tr>'; - print '<tr class="liste_total"><td>'.$langs->trans("OpportunityTotalAmount").' ('.$langs->trans("WonLostExcluded").')</td><td align="right">'.price($totalamount, 0, '', 1, -1, -1, $conf->currency).'</td></tr>'; - print '<tr class="liste_total"><td>'; + print '<tr class="liste_total"><td class="maxwidth150onsmartphone tdoverflow">'.$langs->trans("OpportunityTotalAmount").' ('.$langs->trans("WonLostExcluded").')</td><td align="right">'.price($totalamount, 0, '', 1, -1, -1, $conf->currency).'</td></tr>'; + print '<tr class="liste_total"><td class="minwidth150onsmartphone tdoverflow">'; //print $langs->trans("OpportunityPonderatedAmount").' ('.$langs->trans("WonLostExcluded").')'; print $form->textwithpicto($langs->trans("OpportunityPonderatedAmount").' ('.$langs->trans("WonLostExcluded").')', $langs->trans("OpportunityPonderatedAmountDesc"), 1); print '</td><td align="right">'.price(price2num($ponderated_opp_amount,'MT'), 0, '', 1, -1, -1, $conf->currency).'</td></tr>'; diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index 752e3615464997c7360cd2b0ca134db7860da85a..96f98111c2ee79522fbcc412b56a385b010ef460 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -140,7 +140,7 @@ print '</div><div class="fichetwothirdright"><div class="ficheaddleft">'; print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; -print_liste_field_titre($langs->trans("OpenedProjectsByThirdparties"),$_SERVER["PHP_SELF"],"s.nom","","","",$sortfield,$sortorder); +print_liste_field_titre($langs->trans("OpenedProjectsByThirdparties"),$_SERVER["PHP_SELF"],"s.nom","","",'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("NbOfProjects"),"","","","",'align="right"',$sortfield,$sortorder); print "</tr>\n"; diff --git a/htdocs/projet/info.php b/htdocs/projet/info.php index 5a975b4ec1e1bf6769d455c7a2217ea76473d402..8b6bf3c02884361a14c583484edddce6ccee07e6 100644 --- a/htdocs/projet/info.php +++ b/htdocs/projet/info.php @@ -1,5 +1,5 @@ <?php -/* Copyright (C) 2005-2006 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2005-2016 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify @@ -30,6 +30,11 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; $langs->load("projects"); +$id = GETPOST('id','int'); +$ref = GETPOST('ref','alpha'); +$socid = GETPOST('socid','int'); +$action = GETPOST('action','alpha'); + if (GETPOST('actioncode','array')) { $actioncode=GETPOST('actioncode','array',3); @@ -73,16 +78,19 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP */ $form = new Form($db); +$object = new Project($db); $title=$langs->trans("Project").' - '.$object->ref.' '.$object->name; if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->ref.' '.$object->name.' - '.$langs->trans("Info"); $help_url="EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"; llxHeader("",$title,$help_url); -$object = new Project($db); -$object->fetch($id); -$object->fetch_thirdparty(); -$object->info($id); +if ($id > 0 || ! empty($ref)) +{ + $object->fetch($id, $ref); + $object->fetch_thirdparty(); + $object->info($object->id); +} $head = project_prepare_head($object); @@ -141,7 +149,7 @@ if (! empty($conf->agenda->enabled)) { if (! empty($user->rights->agenda->myactions->create) || ! empty($user->rights->agenda->allactions->create)) { - print '<a class="butAction" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out.'">'.$langs->trans("AddAction").'</a>'; + print '<a class="butAction" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id).'">'.$langs->trans("AddAction").'</a>'; } else { diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 787d902768d9b5c68f9d195a5b0066422a564333..8c2c8909a84bfe214a04ffb01dde1fb98965c25b 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -626,7 +626,7 @@ while ($i < min($num,$limit)) $projectstatic->user_author_id = $obj->fk_user_creat; $projectstatic->public = $obj->public; $projectstatic->ref = $obj->ref; - $projectstatic->datee = $obj->date_end; + $projectstatic->datee = $db->jdate($obj->date_end); $projectstatic->statut = $obj->fk_statut; $projectstatic->opp_status = $obj->fk_opp_status; diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index 05eaafc3e090a45379b209431ebf50438c5fc3ec..5eaa20003af6bca818b669f040350caf79211857 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -31,6 +31,7 @@ if (empty($usedolheader)) <title>Test page</title> <!-- Includes for JQuery (Ajax library) --> <link rel="stylesheet" type="text/css" href="<?php echo DOL_URL_ROOT ?>/includes/jquery/css/smoothness/jquery-ui.css" /> + <!-- <link rel="stylesheet" type="text/css" href="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/datatables/media/css/jquery.dataTables.css" /> --> <?php if ($_GET["dol_use_jmobile"] == 1) { ?> <link rel="stylesheet" type="text/css" href="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/mobile/jquery.mobile-latest.min.css" /> <?php } ?> @@ -38,6 +39,7 @@ if (empty($usedolheader)) <!-- Includes JS for JQuery --> <script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/js/jquery.min.js"></script> <script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/tablednd/jquery.tablednd.0.6.min.js"></script> + <!-- <script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/datatables/media/js/jquery.dataTables.js"></script> --> <script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/select2/select2.min.js?version=4.0.0-beta"></script> <?php if ($_GET["dol_use_jmobile"] == 1) { ?> <script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/mobile/jquery.mobile-latest.min.js"></script> @@ -52,9 +54,26 @@ if (empty($usedolheader)) } else { - $arraycss=array(); - $arrayjs=array(); - + $arraycss=array(); + $arrayjs=array(); + /* + $arraycss=array('/includes/jquery/plugins/datatables/media/css/jquery.dataTables.css', + '/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.dataTables.min.css', + '/includes/jquery/plugins/datatables/extensions/ColReorder/css/colReorder.dataTables.min.css' + ); + $arrayjs=array('/includes/jquery/plugins/datatables/media/js/jquery.dataTables.js', + '/includes/jquery/plugins/datatables/extensions/Buttons/js/dataTables.buttons.js', + '/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.colVis.min.js', + '/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.html5.min.js', + '/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.flash.min.js', + '/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.print.min.js', + '/includes/jquery/plugins/datatables/extensions/ColReorder/js/dataTables.colReorder.min.js', + '/includes/jszip/jszip.min.js', + '/includes/pdfmake/pdfmake.min.js', + '/includes/pdfmake/vfs_fonts.js' + ); + */ + llxHeader('','','','',0,0,$arrayjs,$arraycss); } @@ -66,9 +85,9 @@ else <h2> This page is a sample of page using tables. It is designed to make test with<br> - css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br> -- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> and switch to small screen < 960 to enable view with jmobile)<br> +- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=4&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=4&dol_optimize_smallscreen=1</a> and switch to small screen < 1000 to enable view with jmobile)<br> +- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> and switch to small screen < 570 to enable with emulated jmobile)<br> - no javascript / usage for bind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br> -- dataTables<br> - tablednd<br> </h2> @@ -79,10 +98,10 @@ This page is a sample of page using tables. It is designed to make test with<br> <div class="tagtable centpercent"> <div class="tagtr"> <div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work --> - <select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> + <select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> </div> <div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work --> - <select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> + <select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> </div> </div> </div> @@ -92,10 +111,10 @@ This page is a sample of page using tables. It is designed to make test with<br> <div class="tagtable centpercent"> <form action="xxx" method="POST" class="tagtr"> <div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work --> - <select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> + <select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> </div> <div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work --> - <select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> + <select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> </div> </form> </div> @@ -105,10 +124,10 @@ This page is a sample of page using tables. It is designed to make test with<br> <table class="centpercent"> <tr> <td class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work --> - <select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> + <select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> </td> <td class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work --> - <select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> + <select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs gdfdf gd</option></select> </td> </tr> </table> diff --git a/htdocs/public/test/test_forms.php b/htdocs/public/test/test_forms.php index a697b371438566949db91fe18a3adb59e73777f2..a53f812611a82396338be98c2bee214536aaa46b 100644 --- a/htdocs/public/test/test_forms.php +++ b/htdocs/public/test/test_forms.php @@ -17,7 +17,8 @@ llxHeader(); <h1> This page is a sample of page using Dolibarr HTML widget methods. It is designed to make test with<br> - css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br> -- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> to enable view with jmobile)<br> +- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=4&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=4&dol_optimize_smallscreen=1</a> and switch to small screen < 1000 to enable view with jmobile)<br> +- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> and switch to small screen < 570 to enable with emulated jmobile)<br> - no javascript / usage for bind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br> </h1> <br> diff --git a/htdocs/societe/rib.php b/htdocs/societe/rib.php index 1d8e9348f72137964c21dc3b39e9a02ee5656eaf..f6149690b7e40306db950e8d08da13899a132f32 100644 --- a/htdocs/societe/rib.php +++ b/htdocs/societe/rib.php @@ -62,6 +62,10 @@ $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); $hookmanager->initHooks(array('thirdpartybancard','globalcard')); +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('thirdpartybancard')); + + /* * Actions diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index accff491427a1f6467634533d6354927f7707749..0220f775d7b63fbe092d7b53d6bba6236e3a9fd3 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -994,10 +994,11 @@ else if ($conf->use_javascript_ajax) { print '<tr class="individualline"><td>'.fieldLabel('FirstName','firstname').'</td>'; - print '<td colspan="3"><input type="text" size="60" name="firstname" id="firstname" value="'.$object->firstname.'"></td>'; + print '<td colspan="3"><input type="text" class="minwidth300" maxlength="128" name="firstname" id="firstname" value="'.$object->firstname.'"></td>'; print '</tr>'; - print '<tr class="individualline"><td>'.fieldLabel('UserTitle','civility_id').'</td><td colspan="3">'; - print $formcompany->select_civility($object->civility_id).'</td>'; + // Title + print '<tr class="individualline"><td>'.fieldLabel('UserTitle','civility_id').'</td><td colspan="3" class="maxwidthonsmartphone">'; + print $formcompany->select_civility($object->civility_id, 'civility_id', 'maxwidth100').'</td>'; print '</tr>'; } @@ -1070,9 +1071,9 @@ else // Zip / Town print '<tr><td>'.fieldLabel('Zip','zipcode').'</td><td>'; - print $formcompany->select_ziptown($object->zip,'zipcode',array('town','selectcountry_id','state_id'),6); + print $formcompany->select_ziptown($object->zip,'zipcode',array('town','selectcountry_id','state_id'), 0, 0, '', 'maxwidth100 quatrevingtpercent'); print '</td><td>'.fieldLabel('Town','town').'</td><td>'; - print $formcompany->select_ziptown($object->town,'town',array('zipcode','selectcountry_id','state_id')); + print $formcompany->select_ziptown($object->town,'town',array('zipcode','selectcountry_id','state_id'), 0, 0, '', 'maxwidth100 quatrevingtpercent'); print '</td></tr>'; // Country @@ -1092,15 +1093,15 @@ else // Email web print '<tr><td>'.fieldLabel('EMail','email').(! empty($conf->global->SOCIETE_MAIL_REQUIRED)?'*':'').'</td>'; - print '<td colspan="3"><input type="text" name="email" id="email" size="32" value="'.$object->email.'"></td></tr>'; + print '<td colspan="3"><input type="text" name="email" id="email" value="'.$object->email.'"></td></tr>'; print '<tr><td>'.fieldLabel('Web','url').'</td>'; - print '<td colspan="3"><input type="text" name="url" id="url" size="32" value="'.$object->url.'"></td></tr>'; - + print '<td colspan="3"><input type="text" name="url" id="url" value="'.$object->url.'"></td></tr>'; + // Skype if (! empty($conf->skype->enabled)) { print '<tr><td>'.fieldLabel('Skype','skype').'</td>'; - print '<td colspan="3"><input type="text" name="skype" id="skype" size="32" value="'.$object->skype.'"></td></tr>'; + print '<td colspan="3"><input type="text" name="skype" id="skype" value="'.$object->skype.'"></td></tr>'; } // Phone / Fax diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 0658416797ed52c2f54f728fab2f51753fc1d90e..3ab1c159545d84feb681fba2f3d7d929692ff812 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -34,7 +34,6 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php'; -require_once DOL_DOCUMENT_ROOT . '/core/class/html.formsupplier_proposal.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formmargin.class.php'; require_once DOL_DOCUMENT_ROOT . '/supplier_proposal/class/supplier_proposal.class.php'; require_once DOL_DOCUMENT_ROOT . '/comm/action/class/actioncomm.class.php'; @@ -997,7 +996,6 @@ llxHeader('', $langs->trans('CommRequests'), 'EN:Ask_Price_Supplier|FR:Demande_d $form = new Form($db); $formother = new FormOther($db); $formfile = new FormFile($db); -$formsupplier_proposal = new FormSupplierProposal($db); $formmargin = new FormMargin($db); $companystatic = new Societe($db); if (! empty($conf->projet->enabled)) { $formproject = new FormProjets($db); } @@ -1478,41 +1476,6 @@ if ($action == 'create') } print '</td></tr>'; - // Project - /* - if (! empty($conf->projet->enabled)) { - $langs->load("projects"); - print '<tr><td>'; - print '<table class="nobordernopadding" width="100%"><tr><td>'; - print $langs->trans('Project') . '</td>'; - if ($user->rights->supplier_proposal->creer) { - if ($action != 'classify') - print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=classify&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a></td>'; - print '</tr></table>'; - print '</td><td colspan="3">'; - if ($action == 'classify') { - $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid'); - } else { - $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none'); - } - print '</td></tr>'; - } else { - print '</td></tr></table>'; - if (! empty($object->fk_project)) { - print '<td colspan="3">'; - $proj = new Project($db); - $proj->fetch($object->fk_project); - print '<a href="../projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">'; - print $proj->ref; - print '</a>'; - print '</td>'; - } else { - print '<td colspan="3"> </td>'; - } - } - print '</tr>'; - }*/ - // Multicurrency if (! empty($conf->multicurrency->enabled)) { @@ -1596,14 +1559,32 @@ if ($action == 'create') print '<table class="border centpercent">'; + if (!empty($conf->multicurrency->enabled) && ($object->multicurrency_code != $conf->currency)) + { + // Multicurrency Amount HT + print '<tr><td height="10" class="titlefieldmiddle">' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '</td>'; + print '<td>' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; + print '</tr>'; + + // Multicurrency Amount VAT + print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '</td>'; + print '<td>' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; + print '</tr>'; + + // Multicurrency Amount TTC + print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '</td>'; + print '<td>' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; + print '</tr>'; + } + // Amount HT - print '<tr><td class="titlefield">' . $langs->trans('AmountHT') . '</td>'; - print '<td class="nowrap"><b>' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . '</b></td>'; + print '<tr><td class="titlefieldmiddle">' . $langs->trans('AmountHT') . '</td>'; + print '<td>' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . '</td>'; print '</tr>'; // Amount VAT print '<tr><td>' . $langs->trans('AmountVAT') . '</td>'; - print '<td class="nowrap">' . price($object->total_tva, '', $langs, 0, - 1, - 1, $conf->currency) . '</td>'; + print '<td>' . price($object->total_tva, '', $langs, 0, - 1, - 1, $conf->currency) . '</td>'; print '</tr>'; // Amount Local Taxes @@ -1625,27 +1606,6 @@ if ($action == 'create') print '<td class="nowrap">' . price($object->total_ttc, '', $langs, 0, - 1, - 1, $conf->currency) . '</td>'; print '</tr>'; - if (!empty($conf->multicurrency->enabled)) - { - // Multicurrency Amount HT - print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '</td>'; - print '<td class="nowrap">' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; - print '</tr>'; - - // Multicurrency Amount VAT - print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '</td>'; - print '<td class="nowrap">' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; - print '</tr>'; - - // Multicurrency Amount TTC - print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '</td>'; - print '<td class="nowrap">' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>'; - print '</tr>'; - } - - // Statut - //print '<tr><td height="10">' . $langs->trans('Status') . '</td><td align="left">' . $object->getLibStatut(4) . '</td></tr>'; - print '</table>'; // Margin Infos diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 45dacd3805a98aeb8c2e0d9b16c993be361eb2ae..1d249ad627dbeea50310735b36aeeca946811b62 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -2095,11 +2095,12 @@ class SupplierProposal extends CommonObject if ($mode == 0) return $this->labelstatut[$statut]; if ($mode == 1) return $this->labelstatut_short[$statut]; - if ($mode == 2) return img_picto($this->labelstatut_short[$statut], $statuttrans).' '.$this->labelstatut_short[$statut]; + if ($mode == 2) return img_picto($this->labelstatut[$statut], $statuttrans).' '.$this->labelstatut_short[$statut]; if ($mode == 3) return img_picto($this->labelstatut[$statut], $statuttrans); if ($mode == 4) return img_picto($this->labelstatut[$statut],$statuttrans).' '.$this->labelstatut[$statut]; - if ($mode == 5) return '<span class="hideonsmartphone">'.$this->labelstatut_short[$statut].' </span>'.img_picto($this->labelstatut_short[$statut],$statuttrans); - } + if ($mode == 5) return '<span class="hideonsmartphone">'.$this->labelstatut_short[$statut].' </span>'.img_picto($this->labelstatut[$statut],$statuttrans); + if ($mode == 6) return '<span class="hideonsmartphone">'.$this->labelstatut[$statut].' </span>'.img_picto($this->labelstatut[$statut],$statuttrans); + } /** diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index e51ddfcdceb8bee272c8c641c4e679b891e93fec..a50e8509ba5a210ecb90dec0cb501910f2764166 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -34,8 +34,8 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formsupplier_proposal.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formpropal.class.php'; require_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php'; if (! empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; @@ -191,7 +191,7 @@ llxHeader('',$langs->trans('CommRequest'),'EN:Ask_Price_Supplier|FR:Demande_de_p $form = new Form($db); $formother = new FormOther($db); $formfile = new FormFile($db); -$formsupplier_proposal = new FormSupplierProposal($db); +$formpropal = new FormPropal($db); $companystatic=new Societe($db); $now=dol_now(); @@ -388,7 +388,7 @@ if ($result) print '<input class="flat" size="10" type="text" name="search_author" value="'.$search_author.'">'; print '</td>'; print '<td class="liste_titre" align="right">'; - $formsupplier_proposal->selectSupplierProposalStatus($viewstatut,1); + $formpropal->selectProposalStatus($viewstatut,1,0,1,'supplier'); print '</td>'; // Check boxes print '<td class="liste_titre" align="right">'; diff --git a/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php b/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php index 8f72744486a42e4dd1c69fdd5bdf652b5a611b6f..8ba1f95891803c7712a7567001ed9af954bf5e94 100644 --- a/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php +++ b/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php @@ -28,27 +28,44 @@ global $user; $langs = $GLOBALS['langs']; $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; +$total=0; $ilink=0; $var=true; -$total=0; foreach($linkedObjectBlock as $key => $objectlink) { - $var=!$var; + $ilink++; + $var=!$var; + $trclass=($var?'pair':'impair'); + if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; ?> -<tr <?php echo $bc[$var]; ?> > - <td><?php echo $langs->trans("SupplierProposal"); ?></td> - <td><a href="<?php echo DOL_URL_ROOT.'/supplier_proposal/card.php?id='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowSupplierProposal"),"supplier_proposal").' '.$objectlink->ref; ?></a></td> - <td></td> - <td align="center"><?php echo dol_print_date($objectlink->datec,'day'); ?></td> - <td align="right"><?php - if ($user->rights->supplier_proposal->lire) { - $total = $total + $objectlink->total_ht; - echo price($objectlink->total_ht); - } ?></td> - <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> - <td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> -</tr> + <tr class="<?php echo $trclass; ?>"> + <td><?php echo $langs->trans("SupplierProposal"); ?></td> + <td><a href="<?php echo DOL_URL_ROOT.'/supplier_proposal/card.php?id='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowSupplierProposal"),"supplier_proposal").' '.$objectlink->ref; ?></a></td> + <td></td> + <td align="center"><?php echo dol_print_date($objectlink->datec,'day'); ?></td> + <td align="right"><?php + if ($user->rights->supplier_proposal->lire) { + $total = $total + $objectlink->total_ht; + echo price($objectlink->total_ht); + } ?></td> + <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> + <td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> + </tr> <?php } +if (count($linkedObjectBlock) > 1) +{ + ?> + <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>"> + <td><?php echo $langs->trans("Total"); ?></td> + <td></td> + <td align="center"></td> + <td align="center"></td> + <td align="right"><?php echo price($total); ?></td> + <td align="right"></td> + <td align="right"></td> + </tr> + <?php +} ?> <!-- END PHP TEMPLATE --> diff --git a/htdocs/support/inc.php b/htdocs/support/inc.php index 2db312ee630ca0ec3a45d2ba3d3abdb5ce74819f..869dace222dba665fd568a95a705528a0b649457 100644 --- a/htdocs/support/inc.php +++ b/htdocs/support/inc.php @@ -184,7 +184,7 @@ function conf($dolibarr_main_document_root) $conf->db->user = trim($dolibarr_main_db_user); $conf->db->pass = trim($dolibarr_main_db_pass); - if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_general_ci'; + if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_unicode_ci'; return 1; } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index ae45643c9cb36ab635ea67bd5f9d3490dcd8a486..4f7edd144d2506c85d0566e0c7627fcac9130f50 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -71,7 +71,6 @@ $dol_hide_topmenu=$conf->dol_hide_topmenu; $dol_hide_leftmenu=$conf->dol_hide_leftmenu; $dol_optimize_smallscreen=$conf->dol_optimize_smallscreen; $dol_no_mouse_hover=$conf->dol_no_mouse_hover; -$dol_use_jmobile=$conf->dol_use_jmobile; //$conf->global->THEME_ELDY_ENABLE_PERSONALIZED=0; @@ -221,7 +220,6 @@ print 'dol_hide_topmenu='.$dol_hide_topmenu."\n"; print 'dol_hide_leftmenu='.$dol_hide_leftmenu."\n"; print 'dol_optimize_smallscreen='.$dol_optimize_smallscreen."\n"; print 'dol_no_mouse_hover='.$dol_no_mouse_hover."\n"; -print 'dol_use_jmobile='.$dol_use_jmobile."\n"; print 'dol_screenwidth='.$_SESSION['dol_screenwidth']."\n"; print 'dol_screenheight='.$_SESSION['dol_screenheight']."\n"; print 'fontsize='.$fontsize."\n"; @@ -257,7 +255,9 @@ a.tab { font-weight: bold !important; } a:link, a:visited, a:hover, a:active { font-family: <?php print $fontlist ?>; font-weight: normal; color: rgb(<?php print $colortextlink; ?>); text-decoration: none; } a:hover { text-decoration: underline; color: rgb(<?php print $colortextlink; ?>); } -<?php if (empty($dol_use_jmobile)) { ?> +input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select { + background-color: #FFF; +} input:focus, textarea:focus, button:focus, select:focus { box-shadow: 0 0 4px #8091BF; @@ -270,8 +270,6 @@ textarea.cke_source:focus input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select { font-size: <?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; - background: #FFF; - /* color: #111; */ border: 1px solid #C0C0C0; margin: 0px 0px 0px 0px; } @@ -304,7 +302,6 @@ span.timesheetalreadyrecorded input { border: none; /*background: transparent;*/ } -<?php } ?> select.flat, form.flat select { font-weight: normal; @@ -339,9 +336,9 @@ input[type=checkbox] { background-color: transparent; border: none; box-shadow: input[type=radio] { background-color: transparent; border: none; box-shadow: none; } input[type=image] { background-color: transparent; border: none; box-shadow: none; } input:-webkit-autofill { - background-color: <?php echo empty($dol_use_jmobile)?'#FBFFEA':'#FFFFFF' ?> !important; + background-color: #FBFFEA !important; background-image:none !important; - -webkit-box-shadow: 0 0 0 50px <?php echo empty($dol_use_jmobile)?'#FBFFEA':'#FFFFFF' ?> inset; + -webkit-box-shadow: 0 0 0 50px #FBFFEA inset; } ::-webkit-input-placeholder { color:#ccc; } :-moz-placeholder { color:#bbb; } /* firefox 18- */ @@ -349,9 +346,6 @@ input:-webkit-autofill { :-ms-input-placeholder { color:#ccc; } /* ie */ input:-moz-placeholder { color:#ccc; } -<?php if (! empty($dol_use_jmobile)) { ?> -legend { margin-bottom: 8px; } -<?php } ?> fieldset { border: 1px solid #AAAAAA !important; } @@ -540,12 +534,13 @@ div.myavailability { margin-top: 6px; margin-left: 4px; } -.selectlimit { +.selectlimit, .marginrightonly { margin-right: 10px !important; } .strikefordisabled { text-decoration: line-through; } +/* using a tdoverflowxxx make the min-with not working */ .tdoverflow { max-width: 0; overflow: hidden; @@ -618,19 +613,22 @@ div.myavailability { .minwidth400imp { min-width: 400px !important; } .minwidth500imp { min-width: 500px !important; } } +.maxwidth50 { max-width: 50px; } +.maxwidth75 { max-width: 75px; } .maxwidth100 { max-width: 100px; } .maxwidth150 { max-width: 150px; } .maxwidth200 { max-width: 200px; } .maxwidth300 { max-width: 300px; } .maxwidth400 { max-width: 400px; } .maxwidth500 { max-width: 500px; } +.maxwidth50imp { max-width: 50px !important; } .minheight20 { min-height: 20px; } .minheight40 { min-height: 40px; } .titlefieldcreate { width: 20%; } .titlefield { width: 25%; } .titlefieldmiddle { width: 50%; } -/* Force values for small screen */ +/* Force values for small screen 1400 */ @media only screen and (max-width: 1400px) { .titlefield { width: 30% !important; } @@ -643,6 +641,7 @@ div.myavailability { .minwidth500imp { min-width: 300px !important; } } +/* Force values for small screen 1000 */ @media only screen and (max-width: 1000px) { .maxwidthonsmartphone { max-width: 100px; } @@ -654,16 +653,36 @@ div.myavailability { .minwidth500imp { min-width: 100px !important; } } -/* Force values for small screen */ +/* Force values for small screen 570 */ @media only screen and (max-width: 570px) { - input[type=text] { min-width: 20px; } - + div.titre { + line-height: 2em; + } + .border tbody tr, .border tbody tr td, div.tabBar table.border tr, div.tabBar table.border tr td, div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar div.border .table-val-border-col { + height: 40px !important; + } + + .quatrevingtpercent, .inputsearch { + width: 95%; + } + + input, input[type=text], input[type=password], select, textarea { + min-width: 20px; + min-height: 1.4em; + line-height: 1.4em; + padding: .4em .1em; + border: 1px solid #BBB; + /* max-width: inherit; why this ? */ + } + .hideonsmartphone { display: none; } .noenlargeonsmartphone { width : 50px !important; display: inline !important; } .maxwidthonsmartphone { max-width: 100px; } - .maxwidth100onsmartphone { max-width: 100px; } - .maxwidth150onsmartphone { max-width: 150px; } + .maxwidth50onsmartphone { max-width: 40px; } + .maxwidth75onsmartphone { max-width: 50px; } + .maxwidth100onsmartphone { max-width: 70px; } + .maxwidth150onsmartphone { max-width: 120px; } .maxwidth200onsmartphone { max-width: 200px; } .maxwidth300onsmartphone { max-width: 300px; } .maxwidth400onsmartphone { max-width: 400px; } @@ -675,6 +694,32 @@ div.myavailability { .minwidth500imp { min-width: 50px !important; } .titlefield { width: auto; } .titlefieldcreate { width: auto; } + + #tooltip { + position: absolute; + width: <?php print dol_size(300,'width'); ?>px; + } + + /* intput, input[type=text], */ + select { + width: 98%; + min-width: 40px; + } + + div.divphotoref { + padding-right: 5px; + } + img.photoref, div.photoref { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + padding: 4px; + height: 20px; + width: 20px; + object-fit: contain; + } + } .linkobject { cursor: pointer; } <?php if (GETPOST("optioncss") == 'print') { ?> @@ -792,7 +837,7 @@ div.fiche { margin-<?php print $left; ?>: <?php print (GETPOST("optioncss") == 'print'?6:($dol_hide_leftmenu?'6':'20')); ?>px; margin-<?php print $right; ?>: <?php print (GETPOST("optioncss") == 'print'?8:(empty($conf->dol_optimize_smallscreen)?'12':'6')); ?>px; <?php if (! empty($conf->dol_hide_leftmenu) && ! empty($conf->dol_hide_topmenu)) print 'margin-top: 4px;'."\n"; ?> - <?php if (! empty($conf->dol_use_jmobile)) print ' margin-bottom: 10px;'."\n"; ?> + <?php if (! empty($conf->dol_hide_leftmenu)) print 'margin-bottom: 12px;'."\n"; ?> } div.fichecenter { width: 100%; @@ -1888,10 +1933,7 @@ div.tabs { } div.tabsElem { margin-top: 1px; - <?php if (! empty($conf->dol_use_jmobile)) { ?>; - margin-bottom: -1px; - <?php } ?> -} /* To avoid overlap of tabs when not browser */ +} /* To avoid overlap of tabs when not browser */ div.tabBar { color: #<?php echo $colortextbacktab; ?>; @@ -2316,10 +2358,7 @@ table.border, table.dataTable, .table-border, .table-border-col, .table-key-bord table.borderplus { border: 1px solid #BBB; } -.border tbody tr, .border tbody tr td { - height: 20px; -} -div.tabBar table.border tr, div.tabBar table.border tr td, div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar div.border .table-val-border-col { +.border tbody tr, .border tbody tr td, div.tabBar table.border tr, div.tabBar table.border tr td, div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar div.border .table-val-border-col { height: 20px; } div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar .table-val-border-col { @@ -2449,7 +2488,7 @@ table.listwithfilterbefore { /* Pagination */ div.refidpadding { - padding-top: <?php print empty($conf->dol_use_jmobile)?'3':'7'; ?>px; + padding-top: 3px; } div.refid { font-weight: bold; @@ -2485,10 +2524,8 @@ div.pagination li { display: inline-block; padding-left: 0px; padding-right: 0px; -<?php if (empty($conf->dol_use_jmobile)) { ?> padding-top: 6px; padding-bottom: 5px; -<?php } ?> } .pagination { display: inline-block; @@ -2497,22 +2534,12 @@ div.pagination li { } div.pagination li.pagination a, div.pagination li.pagination span { -<?php if (empty($conf->dol_use_jmobile)) { ?> padding: 6px 12px; margin-left: -1px; line-height: 1.42857143; color: #000; text-decoration: none; - /* - border-color: #ccc; - background-color: #f5f5f5; - background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); - background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);*/ - background-repeat: repeat-x; -<?php } ?> + background-repeat: repeat-x; } div.pagination li.pagination span.inactive { cursor: default; @@ -2544,13 +2571,6 @@ div.pagination li.litext a:hover { background-color: transparent; background-image: none; } -<?php if (! empty($conf->dol_use_jmobile)) { ?> -div.pagination li.litext { - padding-top: 13px; - vertical-align: top; -} -<?php } ?> -<?php if (empty($conf->dol_use_jmobile)) { ?> div.pagination li.noborder a:hover { border: none; background-color: transparent; @@ -2610,7 +2630,6 @@ div.pagination .disabled a:focus { background-color: #fff; border-color: #ddd; } -<?php } ?> div.pagination li.pagination .active { text-decoration: underline; } @@ -2818,7 +2837,7 @@ form.liste_total div { border-top: 1px solid #DDDDDD; } tr.liste_sub_total, tr.liste_sub_total td { - border-bottom: 2px solid #aaa; + border-bottom: 1px solid #aaa; } .tableforservicepart1 .impair, .tableforservicepart1 .pair, .tableforservicepart2 .impair, .tableforservicepart2 .pair { @@ -4189,11 +4208,7 @@ a.ui-link, a.ui-link:hover, .ui-btn:hover, span.ui-btn-text:hover, span.ui-btn-i min-width: .4em; padding-left: 6px; padding-right: 6px; - <?php if (! empty($dol_use_jmobile)) { ?> - font-size: 13px; - <?php } else { ?> font-size: <?php print $fontsize ?>px; - <?php } ?> /* white-space: normal; */ /* Warning, enable this break the truncate feature */ } .ui-btn-icon-right .ui-btn-inner { @@ -4623,30 +4638,6 @@ img.demothumb { div.mainmenu { min-width: 20px; } - - #tooltip { - position: absolute; - width: <?php print dol_size(300,'width'); ?>px; - } - select { - width: 100%; - max-width: 100px; - min-width: 50px; - } - div.divphotoref { - padding-right: 5px; - } - img.photoref, div.photoref { - border: none; - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; - padding: 4px; - height: 20px; - width: 20px; - object-fit: contain; - } - } <?php diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 3922fbf4bef7a8c00dc29e4c99ac94bc282dd20e..7de2c6d9e8212275683996a022a00bfa98c4008b 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -72,7 +72,6 @@ $dol_hide_topmenu=$conf->dol_hide_topmenu; $dol_hide_leftmenu=$conf->dol_hide_leftmenu; $dol_optimize_smallscreen=$conf->dol_optimize_smallscreen; $dol_no_mouse_hover=$conf->dol_no_mouse_hover; -$dol_use_jmobile=$conf->dol_use_jmobile; //$conf->global->THEME_ELDY_ENABLE_PERSONALIZED=0; @@ -163,14 +162,20 @@ $tmppart=explode(',',$colorbackhmenu1); $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); if ($tmpval <= 360) $colortextbackhmenu='FFFFFF'; else $colortextbackhmenu='000000'; + $tmppart=explode(',',$colorbackvmenu1); $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); if ($tmpval <= 360) { $colortextbackvmenu='FFFFFF'; } else { $colortextbackvmenu='000000'; } + $tmppart=explode(',',$colorbacktitle1); -$tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); -if ($tmpval <= 260) { $colortexttitle='FFFFFF'; $colorshadowtitle='888888'; } -else { $colortexttitle='101010'; $colorshadowtitle='FFFFFF'; } +if ($colortexttitle == '') +{ + $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); + if ($tmpval <= 260) { $colortexttitle='FFFFFF'; $colorshadowtitle='888888'; } + else { $colortexttitle='101010'; $colorshadowtitle='FFFFFF'; } +} + $tmppart=explode(',',$colorbacktabcard1); $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); if ($tmpval <= 340) { $colortextbacktab='FFFFFF'; } @@ -215,7 +220,6 @@ print 'dol_hide_topmenu='.$dol_hide_topmenu."\n"; print 'dol_hide_leftmenu='.$dol_hide_leftmenu."\n"; print 'dol_optimize_smallscreen='.$dol_optimize_smallscreen."\n"; print 'dol_no_mouse_hover='.$dol_no_mouse_hover."\n"; -print 'dol_use_jmobile='.$dol_use_jmobile."\n"; print 'dol_screenwidth='.$_SESSION['dol_screenwidth']."\n"; print 'dol_screenheight='.$_SESSION['dol_screenheight']."\n"; print 'fontsize='.$fontsize."\n"; @@ -251,7 +255,9 @@ a.tab { font-weight: bold !important; } a:link, a:visited, a:hover, a:active { font-family: <?php print $fontlist ?>; font-weight: normal; color: rgb(<?php print $colortextlink; ?>); text-decoration: none; } a:hover { text-decoration: underline; color: rgb(<?php print $colortextlink; ?>); } -<?php if (empty($dol_use_jmobile)) { ?> +input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select { + background-color: #FDFDFD; +} input:focus, textarea:focus, button:focus, select:focus { box-shadow: 0 0 4px #8091BF; @@ -264,7 +270,6 @@ textarea.cke_source:focus input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select { font-size: <?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; - background: #FDFDFD; border: 1px solid #C0C0C0; margin: 0px 0px 0px 0px; } @@ -286,7 +291,7 @@ input.removedassigned { vertical-align: text-bottom; margin-bottom: -3px; } -input.smallpadd { +input.smallpadd { /* Used for timesheet input */ padding-left: 1px !important; padding-right: 1px !important; } @@ -299,14 +304,9 @@ span.timesheetalreadyrecorded input { /*background: transparent;*/ } -<?php } ?> - select.flat, form.flat select { font-weight: normal; } -input:disabled { - background:#f4f4f4; -} .optiongrey, .opacitymedium { opacity: 0.5; } @@ -316,6 +316,10 @@ input:disabled { .opacitytransp { opacity: 0; } +select:invalid { color: gray; } +input:disabled { + background:#f4f4f4; +} input.liste_titre { box-shadow: none !important; @@ -331,14 +335,15 @@ input.removedfile { textarea:disabled { background:#f4f4f4; } +input[type=file ] { background-color: transparent; border-top: none; border-left: none; border-right: none; box-shadow: none; } input[type=checkbox] { background-color: transparent; border: none; box-shadow: none; } input[type=radio] { background-color: transparent; border: none; box-shadow: none; } input[type=image] { background-color: transparent; border: none; box-shadow: none; } input[type=text] { min-width: 20px; } input:-webkit-autofill { - background-color: <?php echo empty($dol_use_jmobile)?'#FBFFEA':'#FFFFFF' ?> !important; + background-color: #FBFFEA !important; background-image:none !important; - -webkit-box-shadow: 0 0 0 50px <?php echo empty($dol_use_jmobile)?'#FBFFEA':'#FFFFFF' ?> inset; + -webkit-box-shadow: 0 0 0 50px #FBFFEA inset; } ::-webkit-input-placeholder { color:#ccc; } :-moz-placeholder { color:#bbb; } /* firefox 18- */ @@ -346,9 +351,6 @@ input:-webkit-autofill { :-ms-input-placeholder { color:#ccc; } /* ie */ input:-moz-placeholder { color:#ccc; } -<?php if (! empty($dol_use_jmobile)) { ?> -legend { margin-bottom: 8px; } -<?php } ?> fieldset { border: 1px solid #AAAAAA !important; } @@ -538,7 +540,7 @@ div.myavailability { margin-top: 6px; margin-left: 4px; } -.selectlimit { +.selectlimit, .marginrightonly { margin-right: 10px !important; } .strikefordisabled { @@ -600,30 +602,37 @@ div.myavailability { .clearboth { clear:both; } .hideobject { display: none; } .minwidth50 { min-width: 50px; } -.minwidth100 { min-width: 100px; } -.minwidth200 { min-width: 200px; } -.minwidth300 { min-width: 300px; } -.minwidth400 { min-width: 400px; } -.minwidth500 { min-width: 500px; } -.minwidth50imp { min-width: 50px !important; } -.minwidth100imp { min-width: 100px !important; } -.minwidth200imp { min-width: 200px !important; } -.minwidth300imp { min-width: 300px !important; } -.minwidth400imp { min-width: 400px !important; } -.minwidth500imp { min-width: 500px !important; } +/* rule to reduce top menu - 3rd reduction */ +@media only screen and (min-width: <?php echo round($nbtopmenuentries * $fontsize * 3.4, 0) + 7; ?>px) +{ + .minwidth100 { min-width: 100px; } + .minwidth200 { min-width: 200px; } + .minwidth300 { min-width: 300px; } + .minwidth400 { min-width: 400px; } + .minwidth500 { min-width: 500px; } + .minwidth50imp { min-width: 50px !important; } + .minwidth100imp { min-width: 100px !important; } + .minwidth200imp { min-width: 200px !important; } + .minwidth300imp { min-width: 300px !important; } + .minwidth400imp { min-width: 400px !important; } + .minwidth500imp { min-width: 500px !important; } +} +.maxwidth50 { max-width: 50px; } +.maxwidth75 { max-width: 75px; } .maxwidth100 { max-width: 100px; } .maxwidth150 { max-width: 150px; } .maxwidth200 { max-width: 200px; } .maxwidth300 { max-width: 300px; } .maxwidth400 { max-width: 400px; } .maxwidth500 { max-width: 500px; } +.maxwidth50imp { max-width: 50px !important; } .minheight20 { min-height: 20px; } .minheight40 { min-height: 40px; } .titlefieldcreate { width: 20%; } .titlefield { width: 25%; } .titlefieldmiddle { width: 50%; } -/* Force values for small screen */ +/* Force values for small screen 1400 */ @media only screen and (max-width: 1400px) { .titlefield { width: 30% !important; } @@ -636,6 +645,7 @@ div.myavailability { .minwidth500imp { min-width: 300px !important; } } +/* Force values for small screen 1000 */ @media only screen and (max-width: 1000px) { .maxwidthonsmartphone { max-width: 100px; } @@ -647,14 +657,36 @@ div.myavailability { .minwidth500imp { min-width: 100px !important; } } -/* Force values for small screen */ +/* Force values for small screen 570 */ @media only screen and (max-width: 570px) { + div.titre { + line-height: 2em; + } + .border tbody tr, .border tbody tr td, div.tabBar table.border tr { + height: 40px !important; + } + + .quatrevingtpercent, .inputsearch { + width: 95%; + } + + input, input[type=text], input[type=password], select, textarea { + min-width: 20px; + min-height: 1.4em; + line-height: 1.4em; + padding: .4em .1em; + border: 1px solid #BBB; + /* max-width: inherit; why this */ + } + .hideonsmartphone { display: none; } .noenlargeonsmartphone { width : 50px !important; display: inline !important; } .maxwidthonsmartphone { max-width: 100px; } - .maxwidth100onsmartphone { max-width: 100px; } - .maxwidth150onsmartphone { max-width: 150px; } + .maxwidth50onsmartphone { max-width: 40px; } + .maxwidth75onsmartphone { max-width: 50px; } + .maxwidth100onsmartphone { max-width: 70px; } + .maxwidth150onsmartphone { max-width: 120px; } .maxwidth200onsmartphone { max-width: 200px; } .maxwidth300onsmartphone { max-width: 300px; } .maxwidth400onsmartphone { max-width: 400px; } @@ -666,6 +698,31 @@ div.myavailability { .minwidth500imp { min-width: 50px !important; } .titlefield { width: auto; } .titlefieldcreate { width: auto; } + + #tooltip { + position: absolute; + width: <?php print dol_size(300,'width'); ?>px; + } + + /* intput, input[type=text], */ + select { + width: 98%; + min-width: 40px; + } + + div.divphotoref { + padding-right: 5px; + } + img.photoref, div.photoref { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + padding: 4px; + height: 20px; + width: 20px; + object-fit: contain; + } } .linkobject { cursor: pointer; } <?php if (GETPOST("optioncss") == 'print') { ?> @@ -2083,13 +2140,11 @@ span.butAction, span.butActionDelete { color: #ffffff !important; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #006dcc; - <?php // if (empty($conf->dol_use_jmobile)) { ?> background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); background-image: -o-linear-gradient(top, #0088cc, #0044cc); background-image: linear-gradient(to bottom, #0088cc, #0044cc); - <?php // } ?> background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); border-color: #0044cc #0044cc #002a80; @@ -2214,10 +2269,7 @@ table.borderplus { border: 1px solid #BBB; } -.border tbody tr, .border tbody tr td { - height: 20px; -} -div.tabBar table.border tr { +.border tbody tr, .border tbody tr td, div.tabBar table.border tr { height: 20px; } @@ -2351,7 +2403,7 @@ table.listwithfilterbefore { /* Pagination */ div.refidpadding { - padding-top: <?php print empty($conf->dol_use_jmobile)?'3':'14'; ?>px; + padding-top: 3px; } div.refid { font-weight: bold; @@ -2387,10 +2439,8 @@ div.pagination li { display: inline-block; padding-left: 0px; padding-right: 0px; -<?php if (empty($conf->dol_use_jmobile)) { ?> padding-top: 6px; padding-bottom: 5px; -<?php } ?> } .pagination { display: inline-block; @@ -2400,7 +2450,6 @@ div.pagination li { div.pagination li.pagination a, div.pagination li.pagination span { -<?php if (empty($conf->dol_use_jmobile)) { ?> padding: 6px 12px; margin-left: -1px; line-height: 1.42857143; @@ -2414,7 +2463,6 @@ div.pagination li.pagination span { background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); background-repeat: repeat-x; -<?php } ?> } div.pagination li.pagination span.inactive { cursor: default; @@ -2427,13 +2475,6 @@ border: none; padding-left: 4px; font-weight: bold; } -<?php if (! empty($conf->dol_use_jmobile)) { ?> -div.pagination li.litext { - padding-top: 13px; - vertical-align: top; -} -<?php } ?> -<?php if (empty($conf->dol_use_jmobile)) { ?> div.pagination li.noborder a:hover { border: none; background-color: transparent; @@ -2485,7 +2526,6 @@ div.pagination .disabled a:focus { background-color: #fff; border-color: #ddd; } -<?php } ?> div.pagination li.pagination .active { text-decoration: underline; } @@ -4083,11 +4123,7 @@ a.ui-link, a.ui-link:hover, .ui-btn:hover, span.ui-btn-text:hover, span.ui-btn-i min-width: .4em; padding-left: 6px; padding-right: 6px; - <?php if (! empty($dol_use_jmobile)) { ?> - font-size: 13px; - <?php } else { ?> font-size: <?php print $fontsize ?>px; - <?php } ?> /* white-space: normal; */ /* Warning, enable this break the truncate feature */ } .ui-btn-icon-right .ui-btn-inner { @@ -4362,6 +4398,8 @@ border-top-right-radius: 6px; img.demothumb { box-shadow: 2px 2px 8px #888; margin-bottom: 4px; + margin-right: 20px; + margin-left: 10px; } @@ -4509,8 +4547,7 @@ img.demothumb { width: <?php print dol_size(300,'width'); ?>px; } select { - width: 100%; - max-width: 100px; + width: 98%; min-width: 0 !important; } div.divphotoref { diff --git a/htdocs/user/agenda_extsites.php b/htdocs/user/agenda_extsites.php index 823f5ad307e9fc6af682658935e063ba77785b78..ef7ffd9f70b17ecb34a18e490ed28b154fb3bdf6 100644 --- a/htdocs/user/agenda_extsites.php +++ b/htdocs/user/agenda_extsites.php @@ -169,7 +169,7 @@ print "<table class=\"noborder\" width=\"100%\">"; print "<tr class=\"liste_titre\">"; print "<td>".$langs->trans("Parameter")."</td>"; print "<td>".$langs->trans("Name")."</td>"; -print "<td>".$langs->trans("ExtSiteUrlAgenda")." (".$langs->trans("Example").': http://yoursite/agenda/agenda.ics)</td>'; +print "<td>".$langs->trans("ExtSiteUrlAgenda").'<div class="hideonsmartphone">'." (".$langs->trans("Example").': http://yoursite/agenda/agenda.ics)</div></td>'; print "<td>".$form->textwithpicto($langs->trans("FixTZ"), $langs->trans("FillFixTZOnlyIfRequired"), 1).'</td>'; print '<td align="right">'.$langs->trans("Color").'</td>'; print "</tr>"; @@ -187,13 +187,13 @@ while ($i <= $MAXAGENDA) $var=!$var; print "<tr ".$bc[$var].">"; // Nb - print '<td width="180" class="nowrap">'.$langs->trans("AgendaExtNb",$key)."</td>"; + print '<td class="maxwidth50onsmartphone">'.$langs->trans("AgendaExtNb",$key)."</td>"; // Name - print '<td><input type="text" class="flat hideifnotset" name="AGENDA_EXT_NAME_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_NAME_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_NAME_'.$id.'_'.$key):$object->conf->$name) . '" size="28"></td>'; + print '<td class="maxwidth50onsmartphone"><input type="text" class="flat hideifnotset minwidth100" name="AGENDA_EXT_NAME_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_NAME_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_NAME_'.$id.'_'.$key):$object->conf->$name) . '"></td>'; // URL - print '<td><input type="url" class="flat hideifnotset" name="AGENDA_EXT_SRC_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_SRC_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_SRC_'.$id.'_'.$key):$object->conf->$src) . '" size="60"></td>'; + print '<td class="maxwidth50onsmartphone"><input type="url" class="flat hideifnotset" name="AGENDA_EXT_SRC_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_SRC_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_SRC_'.$id.'_'.$key):$object->conf->$src) . '"></td>'; // Offset TZ - print '<td><input type="text" class="flat hideifnotset" name="AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key):$object->conf->$offsettz) . '" size="2"></td>'; + print '<td><input type="text" class="flat hideifnotset" name="AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key):$object->conf->$offsettz) . '" size="1"></td>'; // Color (Possible colors are limited by Google) print '<td class="nowrap" align="right">'; //print $formadmin->selectColor($conf->global->$color, "google_agenda_color".$key, $colorlist); diff --git a/htdocs/user/card.php b/htdocs/user/card.php index d2c96ab7950c1c4566f7f5b6ae66095250bccc3f..0cd5b07799655925c9accf6e919bfe0cb28cf5c3 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -733,7 +733,7 @@ if (($action == 'create') || ($action == 'adduserldap')) } else { - print '<input size="30" type="text" id="lastname" name="lastname" value="'.GETPOST('lastname').'">'; + print '<input class="minwidth100" type="text" id="lastname" name="lastname" value="'.GETPOST('lastname').'">'; } print '</td></tr>'; @@ -747,7 +747,7 @@ if (($action == 'create') || ($action == 'adduserldap')) } else { - print '<input size="30" type="text" name="firstname" value="'.GETPOST('firstname').'">'; + print '<input class="minwidth100" type="text" name="firstname" value="'.GETPOST('firstname').'">'; } print '</td></tr>'; @@ -1802,7 +1802,7 @@ else print '<td>'; if ($caneditfield && !$object->ldap_sid) { - print '<input size="30" type="text" class="flat" name="lastname" value="'.$object->lastname.'">'; + print '<input class="minwidth100" type="text" class="flat" name="lastname" value="'.$object->lastname.'">'; } else { @@ -1817,7 +1817,7 @@ else print '<td>'; if ($caneditfield && !$object->ldap_sid) { - print '<input size="30" type="text" class="flat" name="firstname" value="'.$object->firstname.'">'; + print '<input class="minwidth100" type="text" class="flat" name="firstname" value="'.$object->firstname.'">'; } else { @@ -1829,8 +1829,8 @@ else // Photo print '<tr>'; print '<td>'.$langs->trans("Photo").'</td>'; - print '<td valign="middle">'; - print $form->showphoto('userphoto',$object,100,0,$caneditfield,'photowithmargin','small'); + print '<td>'; + print $form->showphoto('userphoto',$object,60,0,$caneditfield,'photowithmargin','small'); print '</td>'; print '</tr>'; @@ -1902,7 +1902,7 @@ else if(! empty($conf->api->enabled) && $user->admin) { print '<tr><td>'.$langs->trans("ApiKey").'</td>'; print '<td>'; - print '<input size="30" maxsize="32" type="text" id="api_key" name="api_key" value="'.$object->api_key.'" autocomplete="off">'; + print '<input class="minwidth100" maxsize="32" type="text" id="api_key" name="api_key" value="'.$object->api_key.'" autocomplete="off">'; if (! empty($conf->use_javascript_ajax)) print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_api_key" class="linkobject"'); print '</td></tr>'; @@ -1992,7 +1992,7 @@ else } // Type - print '<tr><td width="25%">'.$langs->trans("Type").'</td>'; + print '<tr><td>'.$langs->trans("Type").'</td>'; print '<td>'; if ($user->id == $object->id || ! $user->admin) { @@ -2035,7 +2035,7 @@ else // State if (empty($conf->global->USER_DISABLE_STATE)) { - print '<tr><td>'.fieldLabel('State','state_id').'</td><td>'; + print '<tr><td class="tdoverflow">'.fieldLabel('State','state_id').'</td><td>'; print $formcompany->select_state($object->state_id,$object->country_code, 'state_id'); print '</td></tr>'; } @@ -2104,7 +2104,7 @@ else print '<td>'; if ($caneditfield && empty($object->ldap_sid)) { - print '<input size="40" type="text" name="email" class="flat" value="'.$object->email.'">'; + print '<input class="minwidth100" type="text" name="email" class="flat" value="'.$object->email.'">'; } else { @@ -2135,7 +2135,7 @@ else print '<td>'; if ($caneditfield) { - print '<input size="40" type="url" name="openid" class="flat" value="'.$object->openid.'">'; + print '<input class="minwidth100" type="url" name="openid" class="flat" value="'.$object->openid.'">'; } else { diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 997933e234b03a111ccd2d413f93a48b97a068e7..75af1dae8e3dae56425a54fe35d7c25b4271a4ac 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1659,38 +1659,48 @@ class User extends CommonObject $outputlangs->load("users"); $outputlangs->load("other"); - $subject = $outputlangs->transnoentitiesnoconv("SubjectNewPassword"); + $appli=constant('DOL_APPLICATION_TITLE'); + if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $appli=$conf->global->MAIN_APPLICATION_TITLE; + + $subject = $outputlangs->transnoentitiesnoconv("SubjectNewPassword", $appli); // Define $urlwithroot //$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root)); - //$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file - $urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current + $urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file + //$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current if (! $changelater) { + $url = $urlwithroot.'/'; + $mesg.= $outputlangs->transnoentitiesnoconv("RequestToResetPasswordReceived").".\n"; $mesg.= $outputlangs->transnoentitiesnoconv("NewKeyIs")." :\n\n"; $mesg.= $outputlangs->transnoentitiesnoconv("Login")." = ".$this->login."\n"; $mesg.= $outputlangs->transnoentitiesnoconv("Password")." = ".$password."\n\n"; $mesg.= "\n"; - $url = $urlwithroot.'/'; - $mesg.= $outputlangs->transnoentitiesnoconv("ClickHereToGoTo", $conf->global->MAIN_APPLICATION_TITLE).': '.$url."\n\n"; + + $mesg.= $outputlangs->transnoentitiesnoconv("ClickHereToGoTo", $appli).': '.$url."\n\n"; $mesg.= "--\n"; $mesg.= $user->getFullName($outputlangs); // Username that make then sending + + dol_syslog(get_class($this)."::send_password changelater is off, url=".$url); } else { + $url = $urlwithroot.'/user/passwordforgotten.php?action=validatenewpassword&username='.$this->login."&passwordhash=".dol_hash($password); + $mesg.= $outputlangs->transnoentitiesnoconv("RequestToResetPasswordReceived")."\n"; $mesg.= $outputlangs->transnoentitiesnoconv("NewKeyWillBe")." :\n\n"; $mesg.= $outputlangs->transnoentitiesnoconv("Login")." = ".$this->login."\n"; $mesg.= $outputlangs->transnoentitiesnoconv("Password")." = ".$password."\n\n"; $mesg.= "\n"; $mesg.= $outputlangs->transnoentitiesnoconv("YouMustClickToChange")." :\n"; - $url = $urlwithroot.'/user/passwordforgotten.php?action=validatenewpassword&username='.$this->login."&passwordhash=".dol_hash($password); $mesg.= $url."\n\n"; $mesg.= $outputlangs->transnoentitiesnoconv("ForgetIfNothing")."\n\n"; - dol_syslog(get_class($this)."::send_password url=".$url); + + dol_syslog(get_class($this)."::send_password changelater is on, url=".$url); } + $mailfile = new CMailFile( $subject, $this->email, diff --git a/htdocs/user/document.php b/htdocs/user/document.php index 36338f03e10204f90438c64c716657137380d884..d19223719094c5a3e77d0843a9a97d6dad93b696 100644 --- a/htdocs/user/document.php +++ b/htdocs/user/document.php @@ -96,6 +96,7 @@ if ($id > 0 || ! empty($ref)) // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('usercard','globalcard')); + /* * Actions */ @@ -108,6 +109,7 @@ if (empty($reshook)) { include_once DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; } + /* * View */ @@ -144,20 +146,21 @@ if ($object->id) } - print '<table class="border"width="100%">'; + print '<table class="border" width="100%">'; // Login - print '<tr><td>'.$langs->trans("Login").'</td><td class="valeur" colspan="3">'.$object->login.' </td></tr>'; + print '<tr><td class="titlefield">'.$langs->trans("Login").'</td><td class="valeur">'.$object->login.' </td></tr>'; - // Nbre fichiers - print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>'; + // Nbre files + print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td>'.count($filearray).'</td></tr>'; //Total taille - print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>'; + print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td>'.$totalsize.' '.$langs->trans("bytes").'</td></tr>'; print '</table>'; - print '</div>'; + dol_fiche_end(); + $modulepart = 'user'; $permission = $user->rights->user->user->creer; diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php index 3240ae2d5ec6042a1f72f92106087acb9244a40e..87d96a466383b4c7f2ace41d5a7450c1f18bd5e1 100644 --- a/htdocs/user/perms.php +++ b/htdocs/user/perms.php @@ -329,8 +329,8 @@ if ($result) { // On affiche ligne pour modifier droits print '<tr '. $bc[$var].'>'; - print '<td class="nowrap">'.img_object('',$picto).' '.$objMod->getName(); - print '<a name="'.$objMod->getName().'"> </a></td>'; + print '<td class="maxwidthonsmartphone tdoverflow">'.img_object('',$picto).' '.$objMod->getName(); + print '<a name="'.$objMod->getName().'"></a></td>'; print '<td align="center" class="nowrap">'; print '<a class="reposition" title="'.dol_escape_htmltag($langs->trans("All")).'" alt="'.dol_escape_htmltag($langs->trans("All")).'" href="perms.php?id='.$object->id.'&action=addrights&entity='.$entity.'&module='.$obj->module.'">'.$langs->trans("All")."</a>"; print '/'; @@ -344,7 +344,7 @@ if ($result) print '<tr '. $bc[$var].'>'; // Picto and label of permission - print '<td>'.img_object('',$picto).' '.$objMod->getName().'</td>'; + print '<td class="maxwidthonsmartphone tdoverflow">'.img_object('',$picto).' '.$objMod->getName().'</td>'; // Permission and tick if (! empty($object->admin) && ! empty($objMod->rights_admin_allowed)) // Permission own because admin @@ -403,7 +403,7 @@ if ($result) } $permlabel=($conf->global->MAIN_USE_ADVANCED_PERMS && ($langs->trans("PermissionAdvanced".$obj->id)!=("PermissionAdvanced".$obj->id))?$langs->trans("PermissionAdvanced".$obj->id):(($langs->trans("Permission".$obj->id)!=("Permission".$obj->id))?$langs->trans("Permission".$obj->id):$langs->trans($obj->libelle))); - print '<td>'.$permlabel. '</td>'; + print '<td class="maxwidthonsmartphone">'.$permlabel.'</td>'; print '</tr>'."\n"; diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index b6d33de99aea9dbb9ae43c9b9134e061669cc366..6fa65660df1619a7adf4610ede70d8e8f6b63532 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -36,7 +36,13 @@ if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); if (! defined('NOREQUIREHOOK')) define('NOREQUIREHOOK','1'); // Disable "main.inc.php" hooks // Some value of modulepart can be used to get resources that are public so no login are required. if ((isset($_GET["modulepart"]) && $_GET["modulepart"] == 'companylogo') && ! defined("NOLOGIN")) define("NOLOGIN",'1'); -if ((isset($_GET["modulepart"]) && $_GET["modulepart"] == 'medias') && ! defined("NOLOGIN")) define("NOLOGIN",'1'); +if ((isset($_GET["modulepart"]) && $_GET["modulepart"] == 'medias') && ! defined("NOLOGIN")) +{ + define("NOLOGIN",'1'); + // For multicompany + $entity=(! empty($_GET['entity']) ? (int) $_GET['entity'] : (! empty($_POST['entity']) ? (int) $_POST['entity'] : 1)); + if (is_numeric($entity)) define("DOLENTITY", $entity); +} /** * Header empty diff --git a/scripts/cron/cron_run_jobs.php b/scripts/cron/cron_run_jobs.php index e10d089c2a861362d1f30c7172d4baaa1e38344d..d60218fba22176bd2ee15f918dbed861e17db2e2 100755 --- a/scripts/cron/cron_run_jobs.php +++ b/scripts/cron/cron_run_jobs.php @@ -82,7 +82,7 @@ if ($key != $conf->global->CRON_KEY) // If param userlogin is reserved word 'firstadmin' if ($userlogin == 'firstadmin') { - $sql='SELECT login from '.MAIN_DB_PREFIX.'user WHERE admin = 1 ORDER BY entity LIMIT 1'; + $sql='SELECT login from '.MAIN_DB_PREFIX.'user WHERE admin = 1 and statut = 1 ORDER BY entity LIMIT 1'; $resql=$db->query($sql); if ($resql) {